我正在阅读具有以下结构的csv文件:
Continent, Country, Year, GDP
所有国家都有多年,但有些国家可能会错过几年。
我的目标是将大陆和国家作为指数,并将每年的GDP作为列。
Continent Country 2009 2010 2011 2012 2013 2014
我试过这个:
df.pivot(index=["Continent", "Country"], columns="Year", values="GDP")
但它给了我这个错误:
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
您可以尝试此示例数据:
pd.DataFrame(columns=['Continent', 'Country', 'Year', 'GDP'],
data=[['NA', 'US', 2014, 1234], ['NA', 'US', 2013, 2345]])
答案 0 :(得分:0)
如果您使用pivot_table
代替pivot
,则可以使用:
In [47]: df.pivot_table(index=["Continent", "Country"], columns="Year", values="GDP")
Out[47]:
Year 2013 2014
Continent Country
NA US 2345 1234
问题是pivot
无法处理index / columns参数的列列表。唯一需要注意的是,如果一个洲/国家/年组合有多个值,那么现在默认是采用均值。