我正在用pandas.read_csv
从csv读取数据。其中一列有不同格式的日期信息(没有标准iso8601或类似的)。我想确保Pandas可以检测到日期格式,而不需要用户进一步输入。说实话,我真的不知道怎么开始。我知道Pandas可以infer_datetime_format
,但是它不能捕获所有的数据变化,或者可能会抛出错误。
我的数据集有几百万行,所以这个过程非常耗时。我的想法是只加载前100行(nrows=100
),然后让函数检测日期格式。从我目前看到的数据集来看,可能是dd-mm-yy,dd-mm-yyy,yyyy-mm-dd(和,.-分隔符的不同变体),1月19日,2019年1月1日,等等。我还有英语(12月)和德语(Dezember)的文本。
我考虑过对列中的每个项运行一个for循环,准备不同格式的案例,也许在try
except
块中,让Pyton检测前100个条目的正确格式。(使用日期格式从:https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior生成不同的案例)
这种方法有道理吗?或者你会怎么做?提前谢谢!
当您让它尝试推断格式时,
pd.to_datetime
可以慢一个数量级。对于混合格式,您可以尝试多次解析它:代码:
^{pr2}$一般来说,如果指定}可以灵活地解析大多数格式。尽管这仍然比尝试用指定的格式解析它几次要慢。在
dayfirst
,那么{因此,即使多次尝试解析它,您仍然会获得巨大的成功,而且您不会错过一些非标准格式。在
您可以试试dateparser,它支持用多种语言解析日期。在
根据他们的文件:
相关问题 更多 >
编程相关推荐