pandasGroupBy的SUMIFS风格计算

SUMIFS style calculation of pandas GroupBy

我正在尝试将两列相互相乘的结果除以我为 groupby 获得的总计,它基于 SUMIFS 样式条件匹配。

我正常分组

df.groupby(["Month","Category","Currency"])["Amount"].sum()

我如何尊重来自这个 groupby 的值,并使用每个相应的数字作为主数据帧计算的除法分母(大致写在下面)。

Month            Category      Currency                    Amount
2000-01-31      Deposit-CA           FC               -8994788.78
                                    GBP             -791962507.93                                 USD               -31808347.06
2001-02-28     Deposit-SA            FC              -10496460.50
                                    KWD            -1064463148.00
2002-08-31      Corporate           KWD                 343753.63

比如我要计算

df["Profit_Rate"]*df["Amount"]/groupby amount sum for each case conditions matching

使用 excel 中的 SUMIF,您可以提供数据范围和条件,您希望通过文本发送这些条件以获得可用于计算的总数。

我的问题是如何从 groupby 访问这些总数并将它们用作另一个方程式中的数字。例如,在我的例子中,我试图根据多个因素计算百分比收益率。

您可能希望转换总和:

totals = df.groupby(["Month","Category","Currency"])["Amount"].transform('sum')

那你可以做

df["Profit_Rate"] * df["Amount"] / totals