我想通过执行以下步骤最终在我的数据框中创建“调整后的比率”列:
1)将“比率”栏的总和取“帐户” - >创建“比率之和”列 2)将“比率”列的每一行除以“比率和”列 - >创建“调整后的比率”
在我自己的代码中,我使用了一种解决方法。我通过“帐户”将“比率”列的总和做了一个组...然后将其合并回原始数据框。最后,我通过简单地划分前两列来导出“调整后的比率”列。
但我正在寻找一种更简单的方法来完成上述操作,而不必将数据集合并在一起。
非常感谢任何帮助!
答案 0 :(得分:0)
您可以使用保留结果长度的groupby.transform
,因此可以直接将其作为新列分配回原始数据框:
(df.assign(SumOfRatios = df.groupby('Account').Ratio.transform('sum'))
.assign(AdjustedRatios = lambda x: x.Ratio/x.SumOfRatios))