Python Pandas groupby: группа А против группы А? - PullRequest
0 голосов
/ 22 сентября 2018

Скажем, данные выглядят так:

df = pd.DataFrame({'Group' : ['A', 'B', 'A', 'B', 'C'],
                   'Value' : [1, 4, 3, 2, 3]})

  Group Value
0     A     1
1     B     4
2     A     3
3     B     2
4     C     3

Обычно при группировании по "Группе" и получении суммы я получу:

df.groupby(by="Group").agg(["sum"])

Group  Value sum
    A          4
    B          6
    C          3

Есть ли способ получить "Группу А""против" группы А ", что-то вроде:

df.groupby(by="Group A vs non-Group A").agg(["sum"])

Group  Value sum
    A          4
non-A          9

Спасибо всем!

1 Ответ

0 голосов
/ 22 сентября 2018

Использование groupby и replace

In [566]: df.groupby(
              df.Group.eq('A').replace({True: 'A', False: 'non-A'})
            )['Value'].sum().reset_index()
Out[566]:
   Group  Value
0      A      4
1  non-A      9

Подробности

In [567]: df.Group.eq('A').replace({True: 'A', False: 'non-A'})
Out[567]:
0        A
1    non-A
2        A
3    non-A
4    non-A
Name: Group, dtype: object

In [568]: df.groupby(df.Group.eq('A').replace({True: 'A', False: 'non-A'}))['Value'].sum()
Out[568]:
Group
A        4
non-A    9
Name: Value, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...