Pandas MultiIndex:将所有列除以一列

时间:2015-03-30 19:25:42

标签: 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

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

weights = results.pop('FINLWT21')
results/weights

但是我得到了

ValueError: cannot join with no level specified and no overlapping names

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

weights.head()
year  quarter
13    1          1271559.398
      2           481169.672

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

1 个答案:

答案 0 :(得分:14)

您必须指定除法的轴(使用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

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