【问题标题】:spanish datetime return NaT [duplicate]西班牙日期时间返回 NaT [重复]
【发布时间】:2021-02-07 19:54:59
【问题描述】:

我有一个格式为19 dic 2020 23:59(西班牙日期)的日期列 我想把它转换成datetime 类型。

df["Time"] = pd.to_datetime(df.Time, format='%d %b %Y %H:%M', errors = "coerce")

运行后代码列是正确的类型datetime,但它只包含NaT值。

我做错了什么?

【问题讨论】:

  • 什么是 'dic' 应该是 'dec'?
  • @adirabargil 而是特定于国家/地区的日期时间格式。这应该在问题中指定。 Ignacio:请不要发布代码/数据/错误消息的图像。在 SO 上直接在此处发布文本。

标签: python pandas datetime


【解决方案1】:

我认为这是一个与 pandas 的功能相关的错误,它不支持其他语言环境,例如 es_ES,就像您的情况一样。我建议按照这两个答案中的描述更改语言环境或进行迭代。第一个使用通过datetime 更改区域设置,第二个建议使用替换。

  1. Converting spanish date into python pandas datetime object with locale setting
  2. Pandas to datetime with German date format?

【讨论】:

  • SO 有重复标志是有原因的
  • 对于%b,西班牙月份名称缩写输入必须是例如dic.;注意点。这既不是 pandas 也不是语言环境问题 - 即使您正确设置了语言环境,您仍然需要为 strptime 提供正确的输入。
【解决方案2】:

这既不是 pandas 问题,也不是语言环境问题。 首先,您的 strptime 指令略有错误,其次,您的输入与 %b 不匹配。 pd.to_datetime 如果您设置正确的语言环境、提供正确的输入并设置正确的格式指令,则可以正常工作:

import locale
locale.setlocale(locale.LC_ALL, 'es_ES')

import pandas as pd

s = '19 dic 2020 23:59'
print(pd.to_datetime(s.replace('dic', 'dic.'), format='%d %b %Y %H:%M'))
# 2020-12-19 23:59:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2021-12-20
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多