Как сгруппировать столбцы слияния на основе одного идентификатора строки с pandas? - PullRequest
2 голосов
/ 06 августа 2020

У меня есть набор данных, в котором много записей для одного места. Я пытаюсь найти способ суммировать все эти записи, не затрагивая другие столбцы. Итак, на всякий случай, если я недостаточно хорошо это объясняю, я хочу использовать такой набор данных:

Locations   Cyclists   maleRunners   femaleRunners   maleCyclists   femaleCyclists
Bedford     10         12            14              17             27
Bedford     11         40            34              9              1
Bedford     7          1             2               3              3
Leeds       1          1             2               0              0
Leeds       20         13            6               1              1
Bath        101        20            33              41             3
Bath        11         2             3               1              0

И превратить его во что-то вроде этого:

Locations   Cyclists   maleRunners   femaleRunners   maleCyclists   femaleCyclists
Bedford     28         53            50              29             31
Leeds       21         33            39              1              1
Bath        111        22            36              42             3

Теперь , Я прочитал, что groupby должно работать определенным образом, но, насколько я понимаю, группа by изменит его на 2 столбца, и я не особо хочу создавать сотни из 2 столбцов, а затем объединять их все. Неужто есть способ сделать это проще?

Ответы [ 2 ]

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

IIU C, groupby + sum подойдет вам:

df.groupby('Locations',as_index=False,sort=False).sum()

Вывод:

  Locations  Cyclists  maleRunners  femaleRunners  maleCyclists  femaleCyclists
0   Bedford        28           53             50            29              31
1     Leeds        21           14              8             1               1
2      Bath       112           22             36            42               3
1 голос
/ 06 августа 2020

Сводная таблица должна работать на вас.

new_df = pd.pivot_table(df, values=['Cyclists', 'maleRunners', 'femalRunners', 
                                     'maleCyclists','femaleCyclists'],index='Locations', aggfunc=np.sum)
...