суммировать несколько строк и столбцов с помощью Groupby - PullRequest
0 голосов
/ 26 июня 2019

У меня есть большой набор данных, который упрощенно выглядит следующим образом:

  Name  c1  c2  c3  c4
0   a1   1   2   2   3
1   a2   2   1   1   2
2   a3   3   1   2   1
3   a4   2   3   3   4
4   b1   1   2   2   3
5   b2   3   1   2   1
6   b3   2   1   2   1
7   b4   1   3   4   1

Я хочу суммировать некоторые столбцы и некоторые строки, чтобы создать объединенный фрейм данных, который будет выглядеть следующим образом:

    Name  c1+c2  c3+c4
0  a1+a2      6      8
1  a3+a4      9     10
2  b1+b2      7      8
3  b3+b4      7      8

Я пытался выяснить, как это сделать с групповой и суммой, но я довольно новичок в этом и не могу обойти это.Любая помощь будет очень ценится!

1 Ответ

0 голосов
/ 26 июня 2019

Сначала вам нужно иметь уникальный идентификатор для строк, которые нужно объединить, т.е.

uq_grp Name  c1  c2  c3  c4
grp1   a1   1   2   2   3
grp1   a2   2   1   1   2
grp2   a3   3   1   2   1
grp2   a4   2   3   3   4
grp3   b1   1   2   2   3
grp3   b2   3   1   2   1

uq_grp в основном определяет, какие строки нужно объединить Теперь сделайте следующее:

df['c1+c2'] = df['c1']+df['c2']
df['c3+c4'] = df['c3']+df['c4']

uq_grp Name  c1  c2  c3  c4 c1+c2  c3+c4
grp1   a1    1   2   2   3    3     5
grp1   a2    2   1   1   2    3     3
grp2   a3    3   1   2   1    4     3
grp2   a4    2   3   3   4    5     7 
grp3   b1    1   2   2   3    3     5 
grp3   b2    3   1   2   1    4     3

Теперь объединяем строки на основе uq_grp

df.groupby(['uq_grp'],as_index=False)[['c1+c2','c3+c4']].sum()

результат

     Name  c1+c2  c3+c4
0  grp1      6      8
1  grp2      9     10
2  grp3      7      8
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...