Pandas日期格式不能转换日期

3

我正在使用Pandas版本0.12.0导入一个包含日期的csv文件。

日期的格式如下:'SEP2005'

使用Pandas读取csv文件:

import pandas as pd

DF = pd.read_csv('mydata.csv') 

mydata.head()
Out[40]: 
      Date  Quantity  
0  APR2002  282.0000     
1  APR2002  NaN     
2  APR2002  0.0000     
3  APR2002  20.2253     
4  APR2002  55.6853     

然后我使用以下方法将日期列转换为索引:

mydata.index = pd.to_datetime(mydata.pop('Date'))

过去很奇怪的是它解析了我的日期并将格式转换为2002-04-15,这正是我想要的。然后我只需要确保日期设置为本月的最后一天:

mydate.index = mydata.index.to_period('M').to_timestamp('M')

Pandas在过去已经很好地选择了最佳的日期格式。

但是,现在当我这样做时,我得到的DataFrame返回相同的文本"APR2002"。

正如你猜测的那样,最后一个to_period将无法处理它。

我没有改变我的代码,也没有更新Pandas,所以我不确定这个变化来自哪里。

我不确定我是否太关心为什么。我真正需要帮助的是如何格式化索引列以反映年-月-日或%Y%m%d,例如2005-04-30

我来自R语言,任何帮助都将是巨大的!

2个回答

2
你可以尝试一下:
 pd.to_datetime(mydata.pop('Date'), format="%b%Y")

但是预期日期的格式应该像Apr2002(请注意不要全部大写)。

您可以使用格式字符串指定日期时间格式,格式字符串将接受strftime参数(在此处定义)。这里也有一些Pandas文档


0

尝试:

DF = pd.read_csv('mydata.csv', parse_dates=[0]) 

谢谢。这对我没有用。我看到有人使用过这个,但我不确定它与pd.read_csv('mydate.csv', parse_dates'True')有什么不同。后者对我也没用。由于我没有得到预期的结果,所以我有点困惑。 - user3055920
好的,问题大多数情况下在于您的CSV文件中存储值的格式,您能否发布其中的一部分?这对我有效,但可能是因为我手动从您发布的示例数据创建了CSV文件。 - Alvaro Fuentes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接