Pandas DataFrame迭代行和求和

时间:2016-05-26 09:24:30

标签: python pandas

我有这个pandas DataFrame:

 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

我想像这样的pandas DataFrame:

 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使用2倍糖)。

我想创建一个额外的列,其中重量%,然后是两次使用的成分的总和(参见上面的示例)。

我试图为这个问题制作一个for循环,但我没有成功。有人有想法吗?

1 个答案:

答案 0 :(得分:4)

groupbytransform 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