首页 > 解决方案 > 如何使用 pandas GroupBy 获取另一个组中的组总和?

问题描述

我有这个 MultiIndexed DataFrame:

- metric_1 cat_A date cat_B foo 2019-03-18 blue 1 yellow 2 red 3 2019-03-19 blue 5 red 10 green 5 bar 2019-03-18 yellow 2 black 2 red 2 2019-03-19 red 1 blue 8 black 1

我想创建一个metric_2单独metric_1使用并除以特定日期和相应metric_1.cat_Bcat_A

输出示例:

- metric_1 metric_2 cat_A date cat_B
foo 2019-03-18 blue 1 0.166 yellow 2 0.333 red 3 0.500 2019-03-19 blue 5 0.250 red 10 0.500 green 5 0.250 bar 2019-03-18 yellow 2 0.333 black 2 0.333 red 2 0.333 2019-03-19 red 1 0.100 blue 8 0.800 black 1 0.100

我正在尝试使用 等对级别求和sum(level = 0)sum(level = 1)但它只需要整个级别的总和,我想我错过了一些东西。

提前致谢!

标签: pythonpandaspandas-groupby

解决方案


使用reindex

df['New']=df['metric_1']/df['metric_1'].sum(level=[0,1],axis=0).reindex(df.index)

推荐阅读