我在pandas df中有一张桌子
master_id pidx pidy flag count
xxx a b A 10
xxx a c A 20
xxx a d A 30
xxx b d A 40
xxx a c C 50
xxx a c C 60
xxx x y C 70
xxx x y C 80
我想对多个列进行分组并对计数进行求和而不考虑标志。
即
xxx a c A 20
xxx a c C 50
xxx a c C 60
最终输出应为
xxx a c A 130
决赛桌应该是
master_id pidx pidy flag count
xxx a b A 10
xxx a c A 130
xxx a d A 30
xxx b d A 40
xxx x y C 150
答案 0 :(得分:2)
I think you need groupby
与agg
- 列flag
由first
和列count
汇总而成sum
:
df = df.groupby(['pidx','pidy']).agg({'flag':'first', 'count':'sum'}).reset_index()
print (df)
pidx pidy count flag
0 a b 10 A
1 a c 130 A
2 a d 30 A
3 b d 40 A
4 x y 150 C
因为如果groupby
,pidx
和pidy
使用flag
,则输出不同:
df = df.groupby(['pidx','pidy','flag'], as_index=False)['count'].sum()
print (df)
pidx pidy flag count
0 a b A 10
1 a c A 20
2 a c C 110
3 a d A 30
4 b d A 40
5 x y C 150