python to_date错误的值

时间:2017-11-10 16:16:11

标签: python python-3.x pandas dataframe

命令:

dataframe.date.head()

结果:

0    12-Jun-98
1     7-Aug-2005
2    28-Aug-66
3    11-Sep-1954
4     9-Oct-66
5     NaN

命令:

pd.to_date(dataframe.date.head())

结果:

0    1998-06-12 00:00:00
1    2005-08-07 00:00:00
2    2066-08-28 00:00:00
3    1954-09-11 00:00:00
4    2066-10-09 00:00:00
5    NaN

我不想得到2066它应该是1966年,该怎么办?

年份范围应该是1920年至2017年。数据框包含空值

1 个答案:

答案 0 :(得分:1)

如果dt.year更多为100,您可以减去2017年:

df['date'] = pd.to_datetime(df['date'])

df['date'] = df['date'].mask(df['date'].dt.year > 2017, 
                             df['date'] - pd.Timedelta(100, unit='Y'))
print (df)

                 date
0 1998-06-12 00:00:00
1 2005-08-07 00:00:00
2 1966-08-28 18:00:00
3 1954-09-11 00:00:00
4 1966-10-09 18:00:00