Группировка по оси 1 с использованием списка в Pandas - PullRequest
0 голосов
/ 28 июня 2018

Следующее из "Анализ данных с использованием панд":

Каждый ключ группировки может принимать разные формы, и ключи не обязательно должны быть все одного типа:

• Список или массив значений такой же длины, что и ось сгруппированных

• Дикт или серия, дающая соответствие между значениями на сгруппируемая ось и имена групп

Я попробовал следующее:

df1
         1980   1981    1982    1983    1984    1985    1986
Country                         
Afghanistan 16  39  39  47  71  340 496
Albania 1   0   0   0   0   0   1
Algeria 80  67  71  69  63  44  69
American Samoa  0   1   0   0   0   0   0
Andorra 0   0   0   0   0   0   2

Grouping_keys_along_axis_1
['1', '1', '1', '2', '2', '3', '3']

df1.groupby(Grouping_keys_along_axis_1, axis = 0).sum()
KeyError: '1'

Такое поведение на самом деле соответствует моему пониманию документации, но, похоже, оно не соответствует фрагменту, который я привел в начале.

Идея состояла в том, чтобы сгруппировать первые 3 столбца вместе в одну группу, следующие 2 столбца во второй группе и последние 2 столбца в третьей группе, а затем применить функцию суммирования (здесь sum ()) в каждой группе. вдоль оси = 1.

Ваш совет будет оценен.

1 Ответ

0 голосов
/ 28 июня 2018

Я думаю, вам нужно следующее:

ga = ['1', '1', '1', '2', '2', '3', '3']

df.groupby(ga, axis=1).sum()

Выход:

                  1    2    3
Country                      
Afghanistan      94  118  836
Albania           1    0    1
Algeria         218  132  113
American Samoa    1    0    0
Andorra           0    0    2

Обратите внимание, это работает, потому что длина вашего списка ga равна длине индекса df.columns. Итак, вы используете список ga (ось группировки), чтобы определить, как группировать столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...