gpt4 book ai didi

python - 每隔一列除以最后一列中的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:56 24 4
gpt4 key购买 nike

我有如下所示的数据。我想用权重列划分每隔一行。有没有自动的方法来做到这一点?我的数据有几列。

我要查找的是 A/Weight 的结果应替换为 A 列,C/Weight 的结果应替换为 C 列,依此类推,直到最后一对列。

          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

感谢您阅读本文并提供帮助!

最佳答案

我们需要 broadcasting这里。因此,一种方法是使用底层数组数据进行原位编辑,就像这样 -

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

sample 运行-

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

一个更省心的替代方案是将整个数据作为数组 View 获取并在该数组本身上处理 -

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

关于python - 每隔一列除以最后一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com