首页 > 解决方案 > 熊猫 - 将日期增加 1

问题描述

我有一个这样的数据框,

ID    DateCol
1      26/06/2017
2      Employee Not Found

我想将日期增加 1。

预期的输出是,

ID    DateCol
1      27/06/2017
2      Employee Not Found

我试过了,

temp_result_df['NewDateCol'] = pd.to_datetime(temp_result_df['DateCol']).apply(pd.DateOffset(1))

它不起作用,因为我相信它上面有一个字符串。

标签: pythonpandas

解决方案


对于缺失值,最好datetimes在列中使用- 使用with或offset:NaTto_datetimeTimedeltaDay

temp_result_df['NewDateCol'] = pd.to_datetime(temp_result_df['DateCol'], errors='coerce') 

temp_result_df['NewDateCol'] += pd.Timedelta(1, 'd')
#alternative
#temp_result_df['NewDateCol'] += pd.offsets.Day(1)
print (temp_result_df)
   ID             DateCol NewDateCol
0   1          26/06/2017 2017-06-27
1   2  Employee Not Found        NaT

如果需要像原始数据这样的字符串strftime需要replace

s = pd.to_datetime(temp_result_df['DateCol'], errors='coerce') + pd.Timedelta(1, 'd')

temp_result_df['NewDateCol'] = s.dt.strftime('%d/%m/%Y').replace('NaT','Employee Not Found')
print (temp_result_df)
   ID             DateCol          NewDateCol
0   1          26/06/2017          27/06/2017
1   2  Employee Not Found  Employee Not Found

推荐阅读