Группировать в pandas путем включения столбцов, которые находятся в группе по условию - PullRequest
1 голос
/ 07 августа 2020

с использованием примера из Pandas сумма по группам, но исключая определенные столбцы

Code   Country      Item_Code   Item    Ele_Code    Unit    Y1961    Y1962   Y1963
2      Afghanistan  15          Wheat   5312        Ha      10       20      30
2      Afghanistan  25          Maize   5312        Ha      10       20      30
4      Angola       15          Wheat   7312        Ha      30       40      50
4      Angola       25          Maize   7312        Ha      30       40      50

, когда мы выполняем

df.groupby(['Country', 'Item_Code'])[["Y1961", "Y1962", "Y1963"]].sum()

, вывод будет

                       Y1961  Y1962  Y1963
Country     Item_Code
Afghanistan 15            10     20     30
            25            10     20     30
Angola      15            30     40     50
            25            30     40     50

Теперь вот мои вопросы

когда я сделаю df.columns я получу только Y1961 Y1962 Y1963

Но что, если я хочу, чтобы Country, Item_Code были включены в виде столбцов, как показано ниже

df.columns

Country, Item_Code ,Y1961  Y1962  Y1963

Ответы [ 2 ]

2 голосов
/ 07 августа 2020

вам нужно указать аргумент as_index=False

df.groupby(['Country', 'Item_Code'],as_index=False)[["Y1961", "Y1962", "Y1963"]].sum()


       Country  Item_Code  Y1961  Y1962  Y1963
0  Afghanistan         15     10     20     30
1  Afghanistan         25     10     20     30
2       Angola         15     30     40     50
3       Angola         25     30     40     50


df.columns

Index(['Code', 'Country', 'Item_Code', 'Item', 'Ele_Code', 'Unit', 'Y1961',
       'Y1962', 'Y1963'],
      dtype='object')

вы также можете сделать

df.groupby(['Country', 'Item_Code'])[["Y1961", "Y1962", "Y1963"]].sum().reset_index()
1 голос
/ 07 августа 2020

Это теперь имена индексов. Вы можете получить это, используя df.index.names.

list(df.index.names) + df.columns.to_list()
['Country', 'Item_Code', 'Y1961', 'Y1962', 'Y1963']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...