[英]How to create a new column with a conditional count in a groupby pandas dataFrame
[英]Pandas, how to count the occurance within grouped dataframe and create new column?
如何使用熊貓獲取組中每個值的計數?
在下表中,我具有“組”和“值”列,並且我想生成一個名為count的新列,其中應包含該值在組中出現的總數。
我的df數據框如下(不包括count列) :
-------------------------
| 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()
但這只是為了查看,我很難將結果作為新列放回數據框。
使用transform
df['count?']=df.groupby(['group','value']).value.transform('count').values
嘗試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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.