【问题标题】:Pandas to_datetime changes year unexpectedly熊猫 to_datetime 意外更改年份
【发布时间】:2019-09-05 03:13:10
【问题描述】:

我有一个日期列,在使用 pandas read_csv 后,它被表示为对象类型。我正在尝试将其转换为 pandas 日期时间对象,但是在使用 pd.to_datetime() 时它返回不正确的日期时间对象。

例如,我有这种格式的日期01-06-68,其中 01 是日期,06 是月份,68 是年份。将 pandas to_datetime() 应用于此字符串会返回 2068-06-01,但应返回 1968-06-01,其中 06 是月份,01 是日期。

我使用 pandas to_datetime()、python 的 datetime、pendulum 库尝试了所有可能的解决方案,但仍然出现错误。我该如何解决这个问题?

【问题讨论】:

标签: python pandas datetime datetime-format python-datetime


【解决方案1】:

用途:

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\1'))

示例

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\1'))
print (df)
        date
0 1970-01-06
1 1969-01-06
2 1968-01-06
3 1967-01-06

【讨论】:

    【解决方案2】:

    pd.to_datetime 中有一个 format= 参数
    你可以试试df['my_col'] = pd.to_datetime(df['my_col'], format='%d-%m-%Y')

    在此处查看其他方法:Convert Pandas Column to DateTime

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2022-11-16
      • 2018-11-12
      相关资源
      最近更新 更多