gpt4 book ai didi

python - 跨多个系列的 Pandas 条件

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:16 25 4
gpt4 key购买 nike

假设我有一些这样的数据:

category = pd.Series(np.ones(4))

job1_days = pd.Series([1, 2, 1, 2])
job1_time = pd.Series([30, 35, 50, 10])

job2_days = pd.Series([1, 3, 1, 3])
job2_time = pd.Series([10, 40, 60, 10])

job3_days = pd.Series([1, 2, 1, 3])
job3_time = pd.Series([30, 15, 50, 15])

每个条目代表一个人(总共 4 个人)。 xxx_days 表示一个人做某事的天数,xxx_time 表示一天中完成该工作所花费的分钟数

我想为某个人分配一个 2类别,如果在所有工作中他们至少花费了 3 天,每次 20 分钟。例如,人员 1 不符合标准,因为他们总共只花了 2 天时间,且至少有 20 分钟(他们的工作 2 天计数不计入总数,因为时间 < 20)。第 2 个人确实符合标准,因为他们总共花费了 5 天(工作 1 和 2)。

替换后,category 应如下所示:[1,2,2,1]

我当前尝试执行此操作需要一个 for 循环并手动索引每个系列并计算时间大于 20 的总天数。但是,这种方法不能很好地适应我的实际数据集。我没有在此处包含代码,因为我想从 Pandas 的角度来处理它

在 Pandas 中执行此操作最有效的方法是什么?让我感到困惑的是检查多个系列的条件并在汇总天数后采取相应的行动

最佳答案

时间放入两个保持列位置对应关系的数据框中,然后以矢量化方法进行计算:

import pandas as pd

time = pd.concat([job1_time, job2_time, job3_time], axis = 1) ​
days = pd.concat([job1_days, job2_days, job3_days], axis = 1)

((days * (time >= 20)).sum(1) >= 3) + 1

#0 1
#1 2
#2 2
#3 1
#dtype: int64

关于python - 跨多个系列的 Pandas 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42570498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com