如何使用pandas GroupBy获取另一个组中的组总数?

时间:2019-04-03 20:17:33

标签: python pandas 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_B以及相应{{ 1}}。

输出示例:

cat_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)等对级别进行求和,但是它仅占用整个级别的总和,我想我缺少了一些东西。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用reindex

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