首页 > 解决方案 > 替换数据框列中大于参考日期的日期

问题描述

我有一个数据框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 列中的任何日期更改为“未知”。所以在上面的例子中我会返回:

  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"]
) 

没有成功。

标签: pythonpandas

解决方案


采用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'
)

推荐阅读