Pandas to_datetime 意外更改年份
Pandas to_datetime changes year unexpectedly
我有一个日期列,在使用 pandas read_csv
后表示为对象类型。我正在尝试将它转换为 pandas 日期时间对象,但是在使用 pd.to_datetime()
时它 return 是不正确的日期时间对象。
例如,我有这种格式的日期 01-06-68
,其中 01 是日,06 是月,68 是年。将 pandas to_datetime()
应用于此字符串 returns 2068-06-01
但应该 return 1968-06-01
,其中 06 是月份,01 是日期。
我使用 pandas to_datetime()、python 的日期时间、钟摆库尝试了所有可能的解决方案,但仍然出现错误。我该如何解决这个问题?
使用:
df['date'] = pd.to_datetime(df['date'].str[:-2] + '19' + df['date'].str[-2:])
另一个解决方案replace
:
df['date'] = pd.to_datetime(df['date'].str.replace(r'-(\d+)$', r'-19'))
样本:
print (df)
date
0 01-06-70
1 01-06-69
2 01-06-68
3 01-06-67
df['date'] = pd.to_datetime(df['date'].str.replace(r'-(\d+)$', r'-19'))
print (df)
date
0 1970-01-06
1 1969-01-06
2 1968-01-06
3 1967-01-06
您在 pd.to_datetime
中有一个 format=
参数
你或许可以尝试 df['my_col'] = pd.to_datetime(df['my_col'], format='%d-%m-%Y')
在此处查看其他方法:Convert Pandas Column to DateTime
我有一个日期列,在使用 pandas read_csv
后表示为对象类型。我正在尝试将它转换为 pandas 日期时间对象,但是在使用 pd.to_datetime()
时它 return 是不正确的日期时间对象。
例如,我有这种格式的日期 01-06-68
,其中 01 是日,06 是月,68 是年。将 pandas to_datetime()
应用于此字符串 returns 2068-06-01
但应该 return 1968-06-01
,其中 06 是月份,01 是日期。
我使用 pandas to_datetime()、python 的日期时间、钟摆库尝试了所有可能的解决方案,但仍然出现错误。我该如何解决这个问题?
使用:
df['date'] = pd.to_datetime(df['date'].str[:-2] + '19' + df['date'].str[-2:])
另一个解决方案replace
:
df['date'] = pd.to_datetime(df['date'].str.replace(r'-(\d+)$', r'-19'))
样本:
print (df)
date
0 01-06-70
1 01-06-69
2 01-06-68
3 01-06-67
df['date'] = pd.to_datetime(df['date'].str.replace(r'-(\d+)$', r'-19'))
print (df)
date
0 1970-01-06
1 1969-01-06
2 1968-01-06
3 1967-01-06
您在 pd.to_datetime
中有一个 format=
参数
你或许可以尝试 df['my_col'] = pd.to_datetime(df['my_col'], format='%d-%m-%Y')
在此处查看其他方法:Convert Pandas Column to DateTime