我有这个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.100sum(level = 0)
等对级别进行求和,但是它仅占用整个级别的总和,我想我缺少了一些东西。
谢谢!
答案 0 :(得分:2)
使用reindex
df['New']=df['metric_1']/df['metric_1'].sum(level=[0,1],axis=0).reindex(df.index)