我收到以下错误:
time data '07/28/2014 18:54:55.099000' does not match format '%d/%m/%Y %H:%M:%S.%f'
Run Code Online (Sandbox Code Playgroud)
但是我看不出哪个参数错了%d/%m/%Y %H:%M:%S.%f?
这是我使用的代码.
from datetime import datetime
time_value = datetime.strptime(csv_line[0] + '000', '%d/%m/%Y %H:%M:%S.%f')
Run Code Online (Sandbox Code Playgroud)
我添加并删除了000但是我得到了同样的错误.
Mar*_*ers 70
你有月交换日:
'%m/%d/%Y %H:%M:%S.%f'
Run Code Online (Sandbox Code Playgroud)
28否则将永远不适合%m月份参数的范围.
使用%m和%d正确的顺序解析工作:
>>> from datetime import datetime
>>> datetime.strptime('07/28/2014 18:54:55.099000', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)
Run Code Online (Sandbox Code Playgroud)
你不需要添加'000'; %f可以正确解析较短的数字:
>>> datetime.strptime('07/28/2014 18:54:55.099', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)
Run Code Online (Sandbox Code Playgroud)
Fáb*_*bio 20
虽然上面的答案是100%有用和正确的,但我想补充以下内容,因为只有上述答案和阅读pandas doc的组合帮助了我:
值得注意的是,为了解析2位数年份,例如"90"而不是"1990",%y需要a而不是a %Y.
如果使用预定义格式进行解析仍然不适合您,请尝试使用该标志infer_datetime_format=True,例如:
yields_df['Date'] = pd.to_datetime(yields_df['Date'], infer_datetime_format=True)
Run Code Online (Sandbox Code Playgroud)
请注意,此解决方案比使用预定义格式慢.
Ami*_*mar 13
无需使用日期时间库。使用 dateutil 库不需要任何格式:
>>> from dateutil import parser
>>> s= '25 April, 2020, 2:50, pm, IST'
>>> parser.parse(s)
datetime.datetime(2020, 4, 25, 14, 50)
Run Code Online (Sandbox Code Playgroud)
我遇到过一个很难找到解决方案的案例。这与特定问题并不完全相关,但可能会帮助某人在向 strptime 提供时区信息时解决具有相同错误消息的情况。就我而言,抛出的原因
ValueError:时间数据 '2016-02-28T08:27:16.000-07:00' 与格式 '%Y-%m-%dT%H:%M:%S.%f%z' 不匹配
时区部分中最后一个冒号的存在。虽然在某些语言环境(例如俄语)中代码能够很好地执行,但在另一种语言环境(例如英语)中却失败了。去掉最后一个冒号有助于纠正我的情况。
| 归档时间: |
|
| 查看次数: |
137171 次 |
| 最近记录: |