我有一个csv文件,其中日期以标准英国格式的字符串存储- %d/%m/%Y
,这意味着它们看起来像:
12/01/2012
30/01/2012
上述示例代表的是2012年1月12日和2012年1月30日。
当我使用pandas版本0.11.0导入这些数据时,我进行了以下转换:
import pandas as pd
...
cpts.Date = cpts.Date.apply(pd.to_datetime)
但是它的日期转换不一致。以我现有的例子为例,12/01/2012会被转换为代表2012年12月1日的日期时间对象,但30/01/2012则会被转换为我想要的2012年1月30日。
在查看这个问题后,我尝试了:
cpts.Date = cpts.Date.apply(pd.to_datetime, format='%d/%m/%Y')
但是结果完全相同。 源代码 表明我做得没错,所以我不知道问题出在哪里。有人知道我做错了什么吗?
read_csv
吗?因为在读取时,你可以直接这样做。 - joriscpts[['Date']].apply(pd.to_datetime, ...)
作为一种解决方法(由于双重 [,它将返回一个带有一个列的 dataframe)。但请注意,它也应该在 Series 上工作(它不起作用是一个 bug),更简单的方法就是直接在列上调用pd.to_datetime(..)
,如 @AndyHayden 在他的答案中指出的那样,或者在read_csv
中进行转换。 - joris