我的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']
我得到了正确的结果。有什么问题,我该如何解决这个问题?
答案 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