熊猫多索引数据集划分



我有一个多索引数据帧,其中有多行具有相同的索引,它看起来像这样:

表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

但结果不是预期的,我不知道发生了什么。

有什么更好的解决方案吗?

我相信这是由于tbl2tbl1之间的索引不匹配。例如,您发布的代码给出

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一致.

最新更新