使用熊猫根据特定列中的条件替换日期值

时间:2019-06-06 06:20:12

标签: python pandas

在我的数据框中,有一个日期列,格式为“%d /%m /%Y”。

我想用今天的日期替换大于今天的日期。

EX:  Date
    --------
    10/05/2019
    06/06/2019
    20/08/2019
    30/09/2020

预期输出:

   Date
------------
 10/05/2019
 06/06/2019
 06/06/2019
 06/06/2019

1 个答案:

答案 0 :(得分:2)

将列转换为日期时间,比较并设置今天的日期:

df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
today = pd.Timestamp.today().floor('d')
df.loc[df['Date'] > today, 'Date'] = today
print (df)
        Date
0 2019-05-10
1 2019-06-06
2 2019-06-06
3 2019-06-06

最后使用相同格式的Series.dt.strftime

df['Date'] = df['Date'].dt.strftime('%d/%m/%Y')
print (df)
         Date
0  10/05/2019
1  06/06/2019
2  06/06/2019
3  06/06/2019

另一种方法,其中仅将过滤后的行设置为日期时间的最终格式:

d = pd.to_datetime(df['Date'], format='%d/%m/%Y')
today = pd.Timestamp.today().floor('d').strftime('%d/%m/%Y')
df.loc[d > today, 'Date'] = today
print (df)
         Date
0  10/05/2019
1  06/06/2019
2  06/06/2019
3  06/06/2019