2014-02-04 12 views
2

Я хочу расстегнуть один столбец в моем Pandas DataFrame. DataFrame индексируется по «Дате», и я хочу открепить столбец «Страна», чтобы каждая страна была его собственной колонкой. В настоящее время панды DF выглядит следующим образом:Pandas: Unstacking One Column of DataFrame

   Country Product  Flow Unit Quantity 
Date               
2002-01-31 FINLAND KEROSENE TOTEXPSB KBD 3.8129  
2002-01-31 TURKEY KEROSENE TOTEXPSB KBD 0.2542  
2002-01-31 AUSTRALI KEROSENE TOTEXPSB KBD 12.2787  
2002-01-31 CANADA KEROSENE TOTEXPSB KBD 5.1161  
2002-01-31  UK KEROSENE TOTEXPSB KBD 12.2013  

Когда я использую df.pivot я получаю следующее сообщение об ошибке «ReshapeError: Индекс содержит повторяющиеся записи, не может изменить» Это верно, так как я смотрю на даты, которые являются сообщалось в то же время каждой страной. Я бы хотел, чтобы отстегнуть «Столбец страны», чтобы только одна Дата показывала для каждого месяца.

в DataFrame заголовки, как эта дата будет по-прежнему индекс:

Date  FINLAND TURKEY AUSTRALI CANADA Flow  Unit 

2002-01-31 3.8129 0.2542 12.2787 5.1161 TOTEXPSB KBD 

Я работал над этим некоторое время, и я не получаю нигде так что любое направление или понимание было бы здорово.

Также обратите внимание, что вы видите только голову DataFrame, поэтому годы данных находятся в этом формате.

Спасибо,

Дуглас

ответ

1

Если вы можете оставить Product, Unit и Flow, то он должен быть столь же легко, как

df.reset_index().pivot(columns='Country', index='Date', values='Quantity') 

дать

Country AUSTRALI CANADA FINLAND TURKEY UK 
Date      
2002-01-31 12.2787  5.1161 3.8129 0.2542 12.2013 
+0

Пожалуйста, позвольте мне чтобы добавить небольшую информацию. Этот DataFrame уже сокращен. Столбец Flow имеет только одну уникальную строку «TOTEXPSB». То же самое и для столбца Unit «KBD» является единственным объектом в столбце. Поэтому я могу удалить оба столбца. Теперь я вижу ваше мнение и удалю эти столбцы и посмотрю, смогу ли я заставить его работать. Спасибо! Douglas – user3055920

+0

Спасибо Douglas, я обновил свой ответ, предположив, что вы также можете отказаться от 'Product'. Если это не так, дайте мне знать. – horatio

+0

Спасибо! Это очень чистое решение. – user3055920

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