Python:在Dataframe中创建新列,通过第三列中的类别显示另一列中的值的总和

时间:2017-05-21 16:19:24

标签: python loops dataframe sum row

我想通过执行以下步骤最终在我的数据框中创建“调整后的比率”列:

1)将“比率”栏的总和取“帐户” - >创建“比率之和”列 2)将“比率”列的每一行除以“比率和”列 - >创建“调整后的比率”

在我自己的代码中,我使用了一种解决方法。我通过“帐户”将“比率”列的总和做了一个组...然后将其合并回原始数据框。最后,我通过简单地划分前两列来导出“调整后的比率”列。

但我正在寻找一种更简单的方法来完成上述操作,而不必将数据集合并在一起。

非常感谢任何帮助!

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用保留结果长度的groupby.transform,因此可以直接将其作为新列分配回原始数据框:

(df.assign(SumOfRatios = df.groupby('Account').Ratio.transform('sum'))
   .assign(AdjustedRatios = lambda x: x.Ratio/x.SumOfRatios))