【发布时间】:2022-11-21 23:11:18
【问题描述】:
我有一个像这样的数据框,其中 C 列只是 0 和 1
| A | B | C
| 1 | 1 | 1
| 1 | 2 | 0
| 1 | 2 | 0
| 1 | 2 | 1
| 1 | 2 | 1
| 2 | 1 | 0
| 2 | 1 | 0
| 2 | 1 | 0
| 2 | 1 | 1
| 2 | 2 | 1
| 3 | 2 | 1
| 3 | 2 | 1
我想获得如下数据框。
| A | B | count0 | count1
| 1 | 1 | 0 | 1
| 1 | 2 | 2 | 2
| 2 | 1 | 3 | 1
| 2 | 2 | 0 | 1
| 3 | 2 | 0 | 2
我基本上想添加两列(计数 0,计数 1),以便分别计算每组具有相同(A,B)的行 C 列中 0 和 1 的数量
我已经做到了
df['count'] = df.groupby( ['A', 'B', 'C'], sort='False')['A'].transform('size')
获得这几乎是我想要的,但我需要根据 C 值拆分计数列
| A | B | C |count
| 1 | 1 | 1 | 1
| 1 | 2 | 0 | 2
| 1 | 2 | 1 | 2
| 2 | 1 | 0 | 3
| 2 | 1 | 1 | 1
| 2 | 2 | 1 | 1
| 3 | 2 | 1 | 2
有没有更好的方法来完成这项任务,或者我只是这样做? 考虑到我有数百万行(<10M)
【问题讨论】: