熊猫日期和文字条件

时间:2018-04-10 21:19:02

标签: python pandas datetime dataframe

给出一个df:

Date1                   Text1    
2018-03-20 00:00:00     abc       
2018-04-01 00:00:00     abc
2018-01-01 00:00:00     abc
2018-04-01 00:00:00     xyz
                        abc

我的目标是在以下位置添加新列: if text =" abc"和Date1从现在开始是90天,然后是#34; New" 输出将是:

Date1                   Text1    NewText
2018-03-20 00:00:00     abc      New
2018-04-01 00:00:00     abc      New
2018-01-01 00:00:00     abc
2018-04-01 00:00:00     xyz
                        abc

这就是我所拥有的:

days90 = date.today() - timedelta(90)

df['NewText'] = np.where(df['Text1'] = "abc" & df['Date1'] < pd.to_datetime(days90), "New", np.nan)

然而,我一直遇到错误 AttributeError:只能使用带有字符串值的.str访问器,它在pandas中使用np.object_ dtype

有什么建议吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

您的代码中有3个错误:

  1. 通过== operator测试变量的相等性。
  2. 确保将个别条件括起来avoid chained comparisons
  3. 对于 90天内的日期,请检查您的测试数据是否大于 days90
  4. 合并后,以下代码将起作用:

    df['NewText'] = np.where((df['Text1'] == "abc") & (df['Date1'] > days90), "New", np.nan)