Python 带多索引的熊猫分割(.div)

Python 带多索引的熊猫分割(.div),python,pandas,Python,Pandas,我有类似的东西 df = pd.DataFrame(np.random.randint(2, 10, size = (5, 2))) df.index = pd.MultiIndex.from_tuples([(1, 'A'), (2, 'A'), (4, 'B'), (5, 'B'), (8, 'B')]) df.index.names = ['foo', 'bar'] df.columns = ['count1', 'count2'] df 其中: c

我有类似的东西

df = pd.DataFrame(np.random.randint(2, 10, size = (5, 2)))
df.index = pd.MultiIndex.from_tuples([(1, 'A'), (2, 'A'), (4, 'B'), 
           (5, 'B'), (8, 'B')])
df.index.names = ['foo', 'bar']
df.columns = ['count1', 'count2']
df
其中:

       count1 count2
foo bar     
1   A    6     7
2   A    2     9
4   B    6     7
5   B    4     6
8   B    5     6
     0
foo 
1    2
2    1
4    1
5    1
8    10
我也有一个总数列表-从其他地方获得-通过相同的“foo”索引:

totals = pd.DataFrame([2., 1., 1., 1., 10.])
totals.index = [1, 2, 4, 5, 8]
totals.index.names = ['foo']
totals
其中:

       count1 count2
foo bar     
1   A    6     7
2   A    2     9
4   B    6     7
5   B    4     6
8   B    5     6
     0
foo 
1    2
2    1
4    1
5    1
8    10
如何将df的所有列(count1和count2)除以总数中的foo数?(因此,我需要通过“foo”编号进行匹配)

我检查了一下,看起来它应该能起作用,但我想不出来

我试过了

df.div(totals, axis = 0)
并更改div中的level选项,但没有成功


一如既往,非常感谢您抽出时间使用
总计[0]
中的
列表工作:

df.div(totals[0].values, axis=0)
但它并没有将
总计中的索引考虑在内。不知道为什么这不起作用:

df.div(totals[0], level=0, axis=0)
尝试:

此外:


不幸的是,我没有时间详细回答。下面的链接对您有帮助吗?这是一个副本:嗨,我检查了这些答案,并尝试使用选项level=0或level='foo',但它不起作用。下面罗曼·佩卡尔的回答是有效的,但我不明白为什么。谢谢,这肯定有效!我很想知道为什么其他选项不起作用,尽管
totals[0]
去掉了一个现有的级别,所以说
level=0
会使它在特定级别上广播;仅使用
总计
不起作用的原因是它具有所有级别。添加
使我的
.div()
情况有所不同。谢谢多级索引划分。