我有这个熊猫数据帧:
recipe_name ingredient_group weight%
pudding milk 0.60
pudding 2 sugar 0.10
pudding 2 sugar 0.70
pudding 2 milk 0.30
pudding 3 egg 0.20
我想要一个这样的熊猫数据帧:
recipe_name ingredient_group weight% new_column
pudding milk 0.60 0.60
pudding 2 sugar 0.10 0.80 (0.1+0.7)
pudding 2 sugar 0.70 0.80 (0.1+0.7)
pudding 2 milk 0.30 0.30
pudding 3 egg 0.20 0.20
问题是有些食谱多次使用相同的成分(例如布丁 2 使用两倍糖)。
我想创建一个额外的列,其中包含权重百分比,然后使用两次的成分的总和(请参阅上面的示例)。
我试图为这个问题制作一个 for 循环,但没有成功。有人有想法吗?
将groupby
与transform
sum
一起使用:
df['accumulated weight'] = df.groupby(['name','group'])['weight'].transform(sum)
print (df)
name group weight accumulated weight
0 Appie elephant 60 60
1 Henry tiger 50 120
2 Henry tiger 70 120
3 Laura cow 30 30
4 Laura tiger 20 20