通过熊猫操作按组访问特定的组

Ani*_*ban 3 python group-by pandas pandas-groupby

    AB
0 1 12
1 1 13
2 1 15
3 2 16
4 2 19
5 2 20
6 3 32
7 3 29
8 3 25
9 4 3
10 4 5
11 4 7

我有一个如上所述的熊猫数据框。我想将“ A”列按1 2 3 4的值分组,并从第4组中减去所有组的B列的值。我该怎么做?

我的结果应如下所示:

    
美国广播公司
1 12 9
1 13 8
1 15 8
2 16 13
2 19 14
2 20 13
3 32 29
3 29 24
3 25 18
4 3 0
4 5 0
4 7 0

cs9*_*s95 5

您可以使用groupbyapply。要获得A = 4的组,请致电GroupBy.get_group(4)

g = df.groupby('A')
df['C'] = g.apply(lambda x: x['B'] - g.get_group(4)['B'].values).values
df

    A   B   C
0   1  12   9
1   1  13   8
2   1  15   8
3   2  16  13
4   2  19  14
5   2  20  13
6   3  32  29
7   3  29  24
8   3  25  18
9   4   3   0
10  4   5   0
11  4   7   0
Run Code Online (Sandbox Code Playgroud)