我有一个带有使用 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
提前致谢
请您参考如下方法:
使用:
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
