Python Pandas groupby:A组与非A组?

时间:2018-09-22 07:37:51

标签: python python-3.x pandas pandas-groupby

比方说数据如下:

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

有没有一种方法可以获取“ A组”与“非A组”,就像这样:

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

Group  Value sum
    A          4
non-A          9

谢谢大家!

1 个答案:

答案 0 :(得分:0)

使用groupbyreplace

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