在熊猫的每一行中,将较低级的列与列表相乘

时间:2020-09-22 18:04:12

标签: python pandas dataframe multi-index

我是熊猫新手,有一个multiIndex数据框df,上面有两个级别的列

        one                zero
          y         x         y         x
0  0.625695  2.149377  0.006123  0.854284
1 -1.392909  0.849853  0.005477  1.743587

现在,我想将每个level=1的每一行与相同长度的列表相乘。

到目前为止,我只能通过类似的方法来实现这一目标 df.stack(level=0).mul([1.5,2.5]).unstack(level=0).swaplevel(0,1,axis=1).T.sort_index().T

输出应如下所示

         one                    zero
           x           y           x           y
0   3.224066    1.564237    1.281426    0.015307
1   1.274779   -3.482272    2.615381    0.013692

我确信必须有一种更轻松/更优雅的方法来实现这一目标。 有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您的意思是:

df.mul(pd.Series({'x':1.5, 'y':2.5}), level=1)

输出:

        one                zero          
          y         x         y         x
0  1.564237  3.224066  0.015307  1.281426
1 -3.482272  1.274780  0.013692  2.615381