我在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)
现在,执行分组依据操作:
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']
我得到了正确的结果。问题是什么,我该如何解决这个问题?
这与您在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