我有一个数据框df
,其中有日期,看起来像:
DATE_OF_ENTRY
0 24/02/2019
1 01/08/2003
2 05/11/2002
3 03/02/2003
4 04/08/2003
5 05/02/2003
6 30/06/2003
7 01/03/2004
8 17/09/2001
我还有一个称为referencePeriodEndDate
的参考日期变量,当前等于'31/03/2019'
。
如果列中的日期大于参考日期,我试图将DATE_OF_ENTRY列中的任何日期更改为“ NOT KNOWN”。因此,在上面的示例中,我将返回:
DATE_OF_ENTRY
0 NOT KNOWN
1 01/08/2003
2 05/11/2002
3 03/02/2003
4 04/08/2003
5 05/02/2003
6 30/06/2003
7 01/03/2004
8 17/09/2001
数据框列和参考数据的类型为:
referencePeriodEndDate = type <class 'str'>
DATE_OF_ENTRY = type object
我尝试了以下方法:
referencePeriodEndDate = parser.parse(referencePeriodEndDate)
referencePeriodEndDate = referencePeriodEndDate.strftime('%d/%m/%Y')
df["DATE_OF_ENTRY"].loc[
df["DATE_OF_ENTRY"] > referencePeriodEndDate,
'DATE_OF_ENTRY'
] = 'NOT KNOWN'
和
df["DATE_OF_ENTRY"] = np.where(
df["DATE_OF_ENTRY"] > referencePeriodEndDate,
"NOT KNOWN", df["DATE_OF_ENTRY"]
)
没有成功。
答案 0 :(得分:2)
使用pd.to_datetime()
referencePeriodEndDate = pd.to_datetime('31/03/2019')
df['DATE_OF_ENTRY'] = pd.to_datetime(df['DATE_OF_ENTRY'])
df['DATE_OF_ENTRY'] = df['DATE_OF_ENTRY'].where(
df['DATE_OF_ENTRY'] <= referencePeriodEndDate, 'NOT KNOWN'
)