2015-01-12 6 views
2

Я читаю файл CSV, которые имеют следующую структуру:Как я могу развернуть этот DataFrame Pandas?

Continent, Country, Year, 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

Если вы используете 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 не может обрабатывать список столбцов для индекса/столбцов аргумента. Единственное предостережение в том, что теперь по умолчанию принято принимать среднее значение, если для одной континенты/страны/года существует несколько значений.

Смежные вопросы