" DateParseError:未知的日期时间字符串格式,无法解析:..."用熊猫

时间:2018-01-12 03:03:26

标签: python pandas dataframe group-by

我的Python代码有些问题,以下是测试代码:

import pandas as pd

dict={'Country':['USA','China','Canada'],'Capitol':['Washington DC','Beijing','Ottawa'],'2015-01':[10,20,30],'2015-02':[15,25,35],'2015-03':[20,30,40],'2015-04':[10,20,30],'2015-05':[40,50,60],'2015-06':[20,30,40]}

sample = pd.DataFrame(dict)
sample.set_index(['Country','Capitol'],inplace=True)

现在,执行groupby操作:

samplegrouped=sample.groupby(pd.PeriodIndex(sample.columns,freq='Q'),axis=1).mean()
samplegrouped['ratio'] = samplegrouped['2015Q1']/samplegrouped['2015Q2']

我收到了这个错误:

DateParseError: Unknown datetime string format, unable to parse: ratio

如果我只是跑

samplegrouped['2015Q1']/samplegrouped['2015Q2']

我得到了正确的结果。有什么问题,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这与您在PeriodIndex上分组的事实有关。这意味着,要添加的其他列必须具有有效日期格式的名称。此错误表示:

DateParseError: Unknown datetime string format, unable to parse: ratio

由于'ratio'不是有效的日期时间格式,因此会抛出错误。

因此,一旦完成分组,将列转换为字符串,如果您不关心维护PeriodIndex -

samplegrouped.columns = samplegrouped.columns.values.astype(str)

现在,您的操作应该没有任何问题 -

samplegrouped['ratio'] = samplegrouped['2015Q1'] / samplegrouped['2015Q2']    
samplegrouped

                       2015Q1     2015Q2     ratio
Country Capitol                                   
USA     Washington DC    15.0  23.333333  0.642857
China   Beijing          25.0  33.333333  0.750000
Canada  Ottawa           35.0  43.333333  0.807692