Pandas MultiIndex: 将所有列除以一个列

21

我有一个数据框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个回答

27

你需要使用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

默认情况下,轴为1且结果的列和权重的索引名称不重叠,因此会出现错误消息。

我刚刚遇到了“ValueError: Shape of passed values is (1, 8), indices imply (4, 8)”的错误。你如何将其映射到所有列? - Little Bobby Tables
1
@josh 我猜你想使用大小为(8,)而不是(1, 8)的东西? - Andy Hayden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接