我的原始数据是这样的
level0 level1 level2
0 0 A foo
1 0 A bar
2 0 B foo
3 0 B foo
4 0 B foo
5 0 B bar
6 1 A foo
7 1 A bar
然后我尝试将计数分组 df.groupby(['level0', 'level1', 'level2']).size()
得到这个
level0 level1 level2
0 A foo 1
bar 1
B foo 3
bar 1
1 A foo 1
bar 1
B foo 1
bar 1
2 A foo 1
bar 1
B foo 1
bar 1
现在我只想将 level2 的计数除以 bar/foo 的比率,得到这样的结果:
level0 level1 {bar counts/foo counts}
0 A 1.00
B 0.33
1 A 1.00
B 1.00
2 A 1.00
B 1.00
也许我什至把原来的groupby设置错了,但也尝试过.div、.apply等,但有心理障碍。谢谢您的指导!
代码
# your groupby code
tmp = df.groupby(['level0', 'level1', 'level2']).size()
# get desired output by xs and div
out = tmp.xs('bar', level=2).div(tmp.xs('foo', level=2))
输出:
level0 level1
0 A 1.000000
B 0.333333
1 A 1.000000