Python 用最后一列中的值除以其他每一列

Python 用最后一列中的值除以其他每一列,python,pandas,Python,Pandas,我的数据如下所示。我想用weight列划分其他每一行。有没有一种自动化的方法可以做到这一点?我的数据大约有几列 我要寻找的是A列中A/Weight的结果应该被替换,C列中C/Weight的结果应该被替换,依此类推,直到最后一对列 A B C D Weight 0 2.056494 -3.002088 0.516822 -1.338846 0.40 1 0.08229

我的数据如下所示。我想用weight列划分其他每一行。有没有一种自动化的方法可以做到这一点?我的数据大约有几列

我要寻找的是A列中A/Weight的结果应该被替换,C列中C/Weight的结果应该被替换,依此类推,直到最后一对列

          A            B           C           D       Weight
 0   2.056494    -3.002088   0.516822    -1.338846      0.40
 1   0.082295    1.387734    -0.495226   1.119553       0.50 
 2   0.298618    -0.130158   0.804705    -0.120110      0.25
 3   0.178088    1.137238    1.331856    -0.472720      0.50
 4   -0.378670   1.649041    -0.240723   2.044113       0.65
 5   3.602587    1.152502    -0.170646   -0.961922      0.50
 6   -0.285846   -0.154891   1.492879    0.752487       0.56
 7   -0.412809   1.076796    -2.001025   -0.954021      0.25
我有类似的东西,但它不起作用:

results=results.iloc[:, 0::2].div(results['Weight'], axis=0)
以下代码适用于其他每一列(B/A和D/C)。但我需要的分母是静态的,只有“权重”列

results_201.iloc[:,1::2] /= results_201.iloc[:,::2].values
谢谢你的阅读和帮助

我们需要这里。因此,一种方法将涉及使用底层数组数据进行原位编辑,如下所示-

df.iloc[:,:-1:2] = df.iloc[:,:-1:2].values / df.iloc[:,[-1]].values
样本运行-

In [62]: df
Out[62]: 
        A       B       C       D  Weight
0  2.0565 -3.0021  0.5168 -1.3388  0.4000
1  0.0823  1.3877 -0.4952  1.1196  0.5000
2  0.2986 -0.1302  0.8047 -0.1201  0.2500
3  0.1781  1.1372  1.3319 -0.4727  0.5000
4 -0.3787  1.6490 -0.2407  2.0441  0.6500
5  3.6026  1.1525 -0.1706 -0.9619  0.5000
6 -0.2858 -0.1549  1.4929  0.7525  0.5600
7 -0.4128  1.0768 -2.0010 -0.9540  0.2500

In [63]: df.iloc[:,:-1:2] = df.iloc[:,:-1:2].values / df.iloc[:,[-1]].values

In [64]: df
Out[64]: 
        A       B       C       D  Weight
0  5.1412 -3.0021  1.2921 -1.3388  0.4000
1  0.1646  1.3877 -0.9905  1.1196  0.5000
2  1.1945 -0.1302  3.2188 -0.1201  0.2500
3  0.3562  1.1372  2.6637 -0.4727  0.5000
4 -0.5826  1.6490 -0.3703  2.0441  0.6500
5  7.2052  1.1525 -0.3413 -0.9619  0.5000
6 -0.5104 -0.1549  2.6659  0.7525  0.5600
7 -1.6512  1.0768 -8.0041 -0.9540  0.2500
另一种更简单的方法是将整个数据作为数组视图获取,并在该数组本身上进行处理-

In [96]: df
Out[96]: 
        A       B       C       D  Weight
0  2.0565 -3.0021  0.5168 -1.3388  0.4000
1  0.0823  1.3877 -0.4952  1.1196  0.5000
2  0.2986 -0.1302  0.8047 -0.1201  0.2500
3  0.1781  1.1372  1.3319 -0.4727  0.5000
4 -0.3787  1.6490 -0.2407  2.0441  0.6500
5  3.6026  1.1525 -0.1706 -0.9619  0.5000
6 -0.2858 -0.1549  1.4929  0.7525  0.5600
7 -0.4128  1.0768 -2.0010 -0.9540  0.2500

In [97]: a = df.values

In [98]: a[:,:-1:2] /= a[:,[-1]]

In [99]: df
Out[99]: 
        A       B       C       D  Weight
0  5.1412 -3.0021  1.2921 -1.3388  0.4000
1  0.1646  1.3877 -0.9905  1.1196  0.5000
2  1.1945 -0.1302  3.2188 -0.1201  0.2500
3  0.3562  1.1372  2.6637 -0.4727  0.5000
4 -0.5826  1.6490 -0.3703  2.0441  0.6500
5  7.2052  1.1525 -0.3413 -0.9619  0.5000
6 -0.5104 -0.1549  2.6659  0.7525  0.5600
7 -1.6512  1.0768 -8.0041 -0.9540  0.2500