【发布时间】:2015-05-10 19:22:54
【问题描述】:
我在数据框中有一长串需要转换为日期时间的日期,日期格式为“%d%m%Y”,我申请datetime.strptime(x,'%d%m%Y'),它有效直到遇到日期 "3122012",它应该是 datetime.datetime(2012, 12, 3, 0, 0),但它会抛出错误消息:
day is out of range for month
这显然是因为程序认为它是 31/2/2012,它不存在。有什么建议可以避免此类问题吗?谢谢!
【问题讨论】:
-
那不应该是
'03122012'吗? -
据说'3122012'是我所拥有的,有什么建议吗?有时您的数据格式不理想...
-
您是否尝试过编写自己的解析器,而不是依赖
datetime.strptime(这需要格式正确的输入)? -
%d%m%Y是一种模棱两可的格式。例如,1112012是指1-11-2012还是11-1-2012?那么……为什么要以这种格式输入日期,然后尝试将它们解析回来?无论如何,如果你真的想这样做并想出一个消歧规则(并且只是接受某些有效日期永远无法表示!),但是你解决了1112012问题,这将为你提供一个解决方案3122012问题免费。 -
@user6396:嗯,要么你必须告诉负责这些数据的人给你有效的数据,要么你必须记录许多完美的日期不能被你的系统处理,因为一些其他你无法控制的傻瓜,然后决定你想让哪一组日期无法访问。允许
01-11-2012但不允许11-01-2012的解决方案稍微更简单,但这并不意味着它一定是您想要的。 1 月还是 11 月对您来说更重要?
标签: python datetime pandas dataframe