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()
情况有所不同。谢谢多级索引划分。