在sql中,选择a。*,count(a.id)作为表格中的N.a.name中的一个组会给我一个新列“N' N'按照规范按照我的组计数
然而,在熊猫中,如果我尝试df [' name']。value_counts(),我会得到计数但不是原始数据框中的列。
有没有办法在单个步骤/语句中将计数作为原始数据框中的列?
答案 0 :(得分:3)
您似乎需要groupby
+ transform
函数size
:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'name':list('aaabcc')})
print (df)
A B C D E name
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 c
5 f 4 3 0 4 c
df['new'] = df.groupby('name')['name'].transform('size')
print (df)
A B C D E name new
0 a 4 7 1 5 a 3
1 b 5 8 3 3 a 3
2 c 4 9 5 6 a 3
3 d 5 4 7 9 b 1
4 e 5 2 1 2 c 2
5 f 4 3 0 4 c 2