Python将日期格式准确转换为日期时间,其中包括1970年之前的日期

时间:2019-04-18 16:05:32

标签: python pandas datetime dataframe data-conversion

将python熊猫代码视为

datetest = pd.DataFrame({'year':['02','08',23,32,43,68,70,72,85,94]})
newdate = pd.to_datetime(datetest['year'], format='%y')
print(newdate)

输出:

0   2002-01-01
1   2008-01-01
2   2023-01-01
3   2032-01-01
4   2043-01-01
5   2068-01-01
6   1970-01-01
7   1972-01-01
8   1985-01-01
9   1994-01-01
Name: year, dtype: datetime64[ns]

那么如何将2023、2032、2043、2068分别转换为1923、1932、1943和1968,以保持日期时间格式不变?

1 个答案:

答案 0 :(得分:3)

您可以使用布尔索引和pandas.DateOffset来将未来的任何日期调整100年。

如果此规则过于严格,则可以为可接受的年份设置自己的阈值:

year = pd.datetime.today().year

# If setting your own threshold year eg.
# year = 2030

newdate.loc[newdate.dt.year.gt(year)] -= pd.DateOffset(years=100)

[出]

0   2002-01-01
1   2008-01-01
2   1923-01-01
3   1932-01-01
4   1943-01-01
5   1968-01-01
6   1970-01-01
7   1972-01-01
8   1985-01-01
9   1994-01-01
Name: year, dtype: datetime64[ns]