尝试分析datetime时出错:
ValueError: ("time data '2019-07-05T10:19:42+00:00' does not match format '%Y-%m-%dT%H:%M:%S%z'", 'occurred at index 0')
生成此错误的行是:
df['yearmonth'] = df.apply(lambda row: datetime.strptime(row['createdAt'], '%Y-%m-%dT%H:%M:%S%z').strftime("%Y%m"), axis=1)
据我所知,格式是正确的,代码在其他机器上运行良好。你知道吗
当我从格式中删除%z并只获取要格式化的数据片段时,它就起作用了,例如:
df['yearmonth'] = df.apply(lambda row: datetime.strptime(row['createdAt'][:19], '%Y-%m-%dT%H:%M:%S').strftime("%Y%m"), axis=1)
所以我猜是%z引起了问题。我认为这个问题与语言环境有关,但我尝试过以各种不同的方式设置语言环境,但都没有成功。你知道吗
如果您能了解如何在不使用切片的情况下修复此问题,我将不胜感激!你知道吗
python2
strptime()
函数确实不支持时区的%z格式(因为时间.strtime()函数不支持它)。您有两种选择:使用strtime进行分析时忽略时区:
使用dateutil模块,它的解析函数处理时区:
您还可以升级到python3.2或更新版本,其中时区支持已经改进到
%z
可以工作的程度,前提是您从输入中删除最后一个:和%z之前的-fromPython 3.6支持对“%z”进行解析时,如果采用这种格式:
+HHMM or -HHMM
如果日期的此部分包含冒号,则不支持分析“%z”:
+HH:MM or -HH:MM
但是,当“%z”节中有冒号时,Python3.7确实支持对该节进行解析。你知道吗
因此,使用python3.7而不是python3.6可以解决这个问题。你知道吗
如果可以,可以考虑使用
dateutil
:相关问题 更多 >
编程相关推荐