Python 按分组并计算1/计数
我有一个熊猫数据框,如下所示:Python 按分组并计算1/计数,python,pandas,Python,Pandas,我有一个熊猫数据框,如下所示: id val 1 10 1 20 2 19 2 21 2 15 现在我想按id分组,并将权重列计算为每组行数的1/count。因此,最终的数据帧如下所示: id val weight 1 10 0.5 1 20 0.5 2 19 0.33 2 21 0.33 2 15 0.33 实现这一点最简单的方法是什么?与除法一起使用: df['weight'] = 1 / df.groupby('id')['id'].transform('
id val
1 10
1 20
2 19
2 21
2 15
现在我想按id分组,并将权重列计算为每组行数的1/count。因此,最终的数据帧如下所示:
id val weight
1 10 0.5
1 20 0.5
2 19 0.33
2 21 0.33
2 15 0.33
实现这一点最简单的方法是什么?与除法一起使用:
df['weight'] = 1 / df.groupby('id')['id'].transform('size')
#alternative
#df['weight'] = df.groupby('id')['id'].transform('size').rdiv(1)
或与:
df['weight'] = 1 / df['id'].map(df['id'].value_counts())
#alternative
#df['weight'] = df['id'].map(df['id'].value_counts()).rdiv(1)
print (df)
id val weight
0 1 10 0.500000
1 1 20 0.500000
2 2 19 0.333333
3 2 21 0.333333
4 2 15 0.333333