问题描述
d1 = today.strftime("%b-%y")
print("d1 =",d1)
d1 = ene.-21
但我想在我的数据集中转换的变量是 1 月 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')
而且效果很好。
您可能想检查您的编码没有做一些奇怪的事情,也许是西里尔字母或其他东西。以下应返回 425
:sum([ord(l) for l in 'Jan-21'])
其中 'Jan-21' 应该是 Pandas Dataframe 中的单元格值,显然不是我刚刚在上面输入的值。
编辑 2:有关该问题的更多详细信息,来自对 OP 有帮助的评论。
df['a'].dt.strftime(date_format='%b-%Y')
会将格式为 mmm-yy
的任何值转换为日期时间。所有的 pandas 系列都有一个 .dt
访问器,它为您提供了很多与 datetime
相关的功能,例如能够返回 .weekofyear 或 .second,而 .strftime
(字符串格式时间)是一个非常通用 Python 方法,它允许使用您需要的格式样式对日期时间进行字符串格式化。您可以更改正斜杠等的破折号。您可以在此链接中查看所有格式选项: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
还有
如果您收到 datetime 错误,并且似乎绝对确定您正在做正确的事情(例如 Edit 2 中给出的示例),请按照以下顺序重新安装和升级您的 datetime 模块:
- pip 卸载日期时间
- pip 安装日期时间
- pip install datetime --upgrade