我有一个这样的数据框,
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))
它不起作用,因为我相信上面有一个字符串。
答案 0 :(得分:1)
最好在带有datetimes
的列中的NaT
中使用缺失值-将to_datetime
与Timedelta
或Day
偏移量一起使用:
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