如何透过此Pandas DataFrame?

时间:2015-01-12 04:54:03

标签: python pandas

我正在阅读具有以下结构的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]])

1 个答案:

答案 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参数的列列表。唯一需要注意的是,如果一个洲/国家/年组合有多个值,那么现在默认是采用均值。