2017-01-26 2 views
1

У меня есть dataframe мультииндексных с колоннами верхнего уровня имени:Комбинирование мультииндексных столбцы с одинаковыми корневыми именами в панд/Python

Col1_1 | Col1_2 | Col 2_1 | Col 2_2 | ... |

Я ищу объединить Col1_1 с Col1_2 в Col1. Я мог бы также сделать это перед созданием мультииндексного, но исходные данные более вытянутые, как:

Col1_1.aspect1 | Col1_1.aspect 2 | Col1_2.aspect1 | Col1_2.aspect2 | ... |

где «aspect1» и «aspect2» становятся подграфами в мультииндексном.

Пожалуйста, дайте мне знать, если я смогу прояснить что-нибудь, и большое спасибо заранее.

Current df

Ожидаемый результат сочетает в себе два, как только sample1; любое количество способов является прекрасным, включая укладку/конкатенацию данных, выводящий сводный стат, например. mean() и т. д.

+0

доля df.head() – Boud

+0

я ранее нашел подобные вопросы, например, http://stackoverflow.com/questions/41221079/rename-multiindex-columns-in-pandas, но я не считаю, что это совершенно правильно для этой проблемы. – metaditch

+1

еще раз, поделитесь примером и поделитесь примером ожидаемого результата – Boud

ответ

1

Вы можете использовать groupby и применять к нему функцию агрегации, как mean. Вы должны группироваться против оси 1 (столбцы) и уровня 1 (нижние столбцы с несколькими индексами). Он будет применять группировку по всем образцам. Тогда просто сделать в среднем, если это то, что вы хотите достичь:

df.groupby(level=1, axis=1).mean() 
+0

Спасибо! Знание «уровней» действительно полезно для новичков Python, подобных мне. Это отличное начало, хотя я получаю: «DataError: нет числовых типов для агрегирования». Я посмотрю, смогу ли я найти проблему, а затем добавить ее здесь и пометить принятой, чтобы закрыть ее. – metaditch

+0

Вероятно, из-за ваших текстовых столбцов: отфильтровывайте их из блока данных перед группировкой – Boud

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