我有一个数据框,其日期列使用pd.to_datetime()转换。当我查看数据时,我发现这些日期中很少有一年提到2216,应该是2016年。你能帮我改变这些日期的年份从2216到2016
Date
0 2216-12-21
1 2216-12-23
2 2216-01-31
3 2016-12-23
4 2216-12-27
5 2216-12-25
6 2016-12-23
我尝试过使用str.replace
df['Date'] = df['Date'].str.replace("2216","2016")
但出现以下错误
Can only use .str accessor with string values, which use np.object_ dtype in pandas
提前致谢
答案 0 :(得分:5)
使用:
df['Date'] = df['Date'].mask(df['Date'].dt.year == 2216,
df['Date'] + pd.offsets.DateOffset(year=2016))
print (df)
Date
0 2016-12-21
1 2016-12-23
2 2016-01-31
3 2016-12-23
4 2016-12-27
5 2016-12-25
6 2016-12-23
为了获得更好的表现:
df['Date'] = df['Date'].mask(df['Date'].dt.year == 2216, df['Date'] -
pd.to_timedelta(200, unit='y') +
pd.to_timedelta(12, unit='h'))
print (df)
Date
0 2016-12-21
1 2016-12-23
2 2016-01-31
3 2016-12-23
4 2016-12-27
5 2016-12-25
6 2016-12-23