如何使用pandas获取组内每个值的计数?
在下表中,我有Group和Value列,我想生成一个名为count的新列,该列应该包含该组中该值的总出现次数。
我的 df 数据框如下(没有计数列):
-------------------------
| Group| Value | Count? |
-------------------------
| A | 10 | 3 |
| A | 20 | 2 |
| A | 10 | 3 |
| A | 10 | 3 |
| A | 20 | 2 |
| A | 30 | 1 |
-------------------------
| B | 20 | 3 |
| B | 20 | 3 |
| B | 20 | 3 |
| B | 10 | 1 |
-------------------------
| C | 20 | 2 |
| C | 20 | 2 |
| C | 10 | 2 |
| C | 10 | 2 |
-------------------------
我可以使用这个获得计数:
df.groupby(['group','value']).value.count()
但这只是为了查看,我正在艰难地将结果作为新列返回到数据框。
答案 0 :(得分:2)
使用transform
df['count?']=df.groupby(['group','value']).value.transform('count').values
答案 1 :(得分:1)
尝试merge
:
df
Group Value
0 A 10
1 A 20
2 A 10
3 A 10
4 A 20
5 A 30
6 B 20
7 B 20
8 B 20
9 B 10
10 C 20
11 C 20
12 C 10
13 C 10
g = df.groupby(['Group', 'Value']).Group.count()\
.to_frame('Count?').reset_index()
df = df.merge(g)
df
Group Value Count?
0 A 10 3
1 A 10 3
2 A 10 3
3 A 20 2
4 A 20 2
5 A 30 1
6 B 20 3
7 B 20 3
8 B 20 3
9 B 10 1
10 C 20 2
11 C 20 2
12 C 10 2
13 C 10 2