我有一个这样的 Dataframe ,其中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
我想得到一个如下的 Dataframe 。
| A | B | count0 | count1
| 1 | 1 | 0 | 1
| 1 | 2 | 2 | 2
| 2 | 1 | 3 | 1
| 2 | 2 | 0 | 1
| 3 | 2 | 0 | 2
我基本上想添加两列(count0,count1),以便分别计算具有相同(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)
1条答案
按热度按时间z0qdvdin1#
您需要
crosstab
:输出量: