我有一个多索引数据帧,其中有多行具有相同的索引,它看起来像这样:
表1
m_value
LETTER NUMBER
A 1 45487
A 1 7424
A 1 1564
A 1 486421
A 2 7897
A 2 12
A 2 4897
... ... ...
D 4 78978
D 4 12
D 4 27827
另一个更小,具有相同的多索引,但每个键只有一个关联:
表2
divide
LETTER NUMBER
A 1 45
A 2 25
A 3 7
A 4 11
B 1 25
B 2 3
B 3 45
... ... ...
D 2 89
D 3 25
D 4 10
我想将第一个数据集除以第二个数据集,尊重 multindex 键。
我试过这个
table_A['result'].div(table_2['divide']).values
但结果不是预期的,我不知道发生了什么。
有什么更好的解决方案吗?
我相信这是由于tbl2
和tbl1
之间的索引不匹配。例如,您发布的代码给出
LETTER NUMBER
A 1 1010.822222
1 164.977778
1 34.755556
1 10809.355556
2 315.880000
2 0.480000
2 195.880000
3 NaN
4 NaN
B 1 NaN
2 NaN
3 NaN
D 2 NaN
3 NaN
4 7897.800000
4 1.200000
4 2782.700000
dtype: float64
如我们所见,NaN
值对应于不在tbl1
.所以我们可以做到:
tbl1['m_value'].div(tbl2['divide']).dropna()
我们得到:
LETTER NUMBER
A 1 1010.822222
1 164.977778
1 34.755556
1 10809.355556
2 315.880000
2 0.480000
2 195.880000
D 4 7897.800000
4 1.200000
4 2782.700000
dtype: float64
这与tbl1
一致.