A B 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列的值。我该怎么做? >
我的结果应如下:
A B C 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
答案 0 :(得分:5)
您可以使用groupby
和apply
。要获取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