gpt4 book ai didi

python - 使用 pandas.to_datetime 转换时指定日期格式

转载 作者:IT老高 更新时间:2023-10-28 20:40:06 29 4
gpt4 key购买 nike

我在 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 日,这正是我想要的。

看完this question我试过了:

cpts.Date = cpts.Date.apply(pd.to_datetime, format='%d/%m/%Y')

但结果完全一样。 source code表明我做对了,所以我很茫然。有谁知道我做错了什么?

最佳答案

您可以使用 read_csv 中的 parse_dates 选项在读取数据时直接进行转换。
这里的诀窍是使用 dayfirst=True 来指示您的日期从一天开始,而不是从月份开始。更多信息请看这里:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.parsers.read_csv.html

当你的日期必须是索引时:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = StringIO("""date,value
... 12/01/2012,1
... 12/01/2012,2
... 30/01/2012,3""")
>>>
>>> pd.read_csv(s, index_col=0, parse_dates=True, dayfirst=True)
value
date
2012-01-12 1
2012-01-12 2
2012-01-30 3

或者当您的日期只是在某个列中时:

>>> s = StringIO("""date
... 12/01/2012
... 12/01/2012
... 30/01/2012""")
>>>
>>> pd.read_csv(s, parse_dates=[0], dayfirst=True)
date
0 2012-01-12 00:00:00
1 2012-01-12 00:00:00
2 2012-01-30 00:00:00

关于python - 使用 pandas.to_datetime 转换时指定日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672237/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com