Pandas分部(.div)带多索引

2024-09-29 01:33:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有类似的东西

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

它给出了:

^{pr2}$

我也有一个总数的列表-从其他地方获得-通过相同的“foo”索引:

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

它给出了:

     0
foo 
1    2
2    1
4    1
5    1
8    10

如何将df的所有列(count1count2)除以totals中的foo数?(因此,我需要根据“foo”编号进行匹配)

我检查了this question,看起来它应该能做到这一点,但我还是想不出来。在

我试过了

df.div(totals, axis = 0)

并更改div中的level选项,但没有成功。在

一如既往,非常感谢您抽出时间


Tags: divdataframedfsizeindexfoonamesnp
2条回答

使用来自totals[0]values列表可以:

df.div(totals[0].values, axis=0)

但它没有考虑totals的索引。不知道为什么这样不行:

^{pr2}$

尝试:

df.div(totals[0],axis='index',level='foo')

         count1  count2
foo bar                
1   A       1.0     4.5
2   A       4.0     8.0
4   B       5.0     9.0
5   B       5.0     5.0
8   B       0.9     0.5

同时:

^{pr2}$

相关问题 更多 >