Pandas MultiIndex:将所有列除以一列

Foo*_*Bar 12 python pandas

我有一个results表格的数据框

                  TOTEXPPQ      TOTEXPCQ     FINLWT21
year quarter                                         
13   1        9.183392e+09  5.459961e+09  1271559.398
     2        2.907887e+09  1.834126e+09   481169.672
Run Code Online (Sandbox Code Playgroud)

我试图将所有(前两个)列除以最后一列.我的尝试是

weights = results.pop('FINLWT21')
results/weights
Run Code Online (Sandbox Code Playgroud)

但我明白了

ValueError: cannot join with no level specified and no overlapping names
Run Code Online (Sandbox Code Playgroud)

我没有得到:索引中有重叠的名称:

weights.head()
year  quarter
13    1          1271559.398
      2           481169.672
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来进行这种划分?我需要重置索引吗?

And*_*den 17

您必须指定除法的轴(使用div方法):

In [11]: results.div(weights, axis=0)
Out[11]:
                 TOTEXPPQ     TOTEXPCQ
year quarter
13   1        7222.149445  4293.909517
     2        6043.371329  3811.807158
Run Code Online (Sandbox Code Playgroud)

默认值为axis = 1,结果和权重的索引名称不重叠,因此出现错误消息.