pd.to_datetime() 使用西班牙语语言环境系统

pd.to_datetime() with spanish locale system

d1 = today.strftime("%b-%y")
print("d1 =", d1)

d1 = ene.-21

但是我想在我的数据集中转换的变量是 Jan-21。

我的代码

data['date_text_DATE'] = pd.to_datetime(data['date_text'], format = '%b-%y')

我得到的错误:

ValueError: time data 'Jan-21' does not match format '%b-%y' (match)

它不会将文本转换为日期格式。

编辑:作者在下面的评论中指出问题是由于他们的 Python/R 环境造成的。

我不确定你想用 d1 变量完成什么,但我创建的示例对我来说工作正常。

我怀疑您的列中有一个值不符合日期模式。你能分享整个数据集或那一列吗

这是我所做的。

df = pd.DataFrame(data={'a':'Jan-21'}, index=[0])
pd.to_datetime(df['a'], format='%b-%y')

而且效果很好。

您可能想检查一下您的编码是否在做一些奇怪的事情,也许是西里尔字母之类的。以下应return425sum([ord(l) for l in 'Jan-21'])

其中 'Jan-21' 应该是 Pandas 数据框中的单元格值,显然不是我在上面输入的值。

编辑 2:有关该问题的更多详细信息,来自对 OP 有帮助的评论。

df['a'].dt.strftime(date_format='%b-%Y') 会将 mmm-yy 格式的任何值转换为日期时间。所有 pandas 系列都有一个 .dt 访问器,它为您提供了许多 datetime 相关功能,例如能够 return .weekofyear 或 .second,以及 .strftime (字符串格式时间)是一种非常常见的 Python 方法,它允许使用您需要的格式样式对日期时间进行字符串格式化。您可以更改正斜杠的破折号等。您可以在此 link 查看所有格式选项:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes

有关 .dt 访问器的更多信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.strftime.html

还有

如果您在日期时间方面遇到错误,并且看起来绝对确定您正在做正确的事情(例如编辑 2 中给出的示例),那么按顺序重新安装和升级您的日期时间模块:

  1. pip 卸载日期时间
  2. pip 安装日期时间
  3. pip 安装日期时间 --upgrade