根据pandas列上的多个条件使用pd.apply进行分类分配

时间:2019-08-01 22:15:45

标签: python-3.x pandas

我有一个数据框,其中包含具有多个任务的项目ID号以及这些任务的完成日期。我正在尝试根据任务的完成情况或完成情况在单独的列中分配类别

我的数据框如下:

Item ID     Task 1 Comp Date  Task 2 Comp Date  Task 3 Comp Date
12781463    NaT               NaT               NaT
10547725    6/6/2019          7/30/2019         8/1/2019
12847251    5/31/2019         6/12/2019         NaT
12734403    5/31/2019         NaT               NAT

为了测试我应对挑战的方法,我获取了数据集的一部分,并编写了将与pd.apply()一起使用的部分函数。下面是我的.apply()函数的一些示例代码

def gating(row):
    if row['Task 1 Comp Date'].isnull():
        return "Pending Task 1"
    if row['Task 3 Comp Date'] .notnull():
        return "Complete"


df['Gating'] = df.apply(gating, axis = 1)

我原本希望看到ID ID10547725的值为“完成”,但得到

AttributeError :(“ Timestamp”对象没有属性“ notnull”,“出现在索引8”)

我应该采取其他方法吗?

1 个答案:

答案 0 :(得分:0)

  

我应该采取其他方法吗?

拉斐尔克提供了正确的答案:

  

row['Task 1 Comp Date'].isnull()的{​​{1}}更改为

这可以纠正您报告的“ NaN故障”诊断:

  

AttributeError :(“ Timestamp”对象没有属性“ notnull”,“出现在索引8”)

您提出的当前问题已得到回答。 您的“有条件使用并再次检查”提示 也许您想发表一个单独的问题。