gpt4 book ai didi

python - 乘以多列 Pandas

转载 作者:行者123 更新时间:2023-11-28 17:05:56 27 4
gpt4 key购买 nike

我有一个这样的数据框,但有更多的列,我想将每两个相邻的列相乘,并在它旁边的新列中说明两者的乘积,并将其命名为 Sub_pro最后,将所有 Sub_pro 的总和放在名为 F_Pro 的列中,并将精度降低到小数点后 3 位。我不知道如何获取 Sub_pro 列。下面是我的代码。

import pandas as pd
df = pd.read_excel("C:dummy")
df['F_Pro'] = ("Result" * "Attribute").sum(axis=1)
df.round(decimals=3)
print (df)

输入

Id Result   Attribute       Result1    Attribute1
1 0.5621 0.56 536 0.005642
2 0.5221 0.5677 2.15 93
3 0.024564 5.23 6.489 8
4 11.564256 4.005 0.45556 5.25
5 0.6123 0.4798 0.6667 5.10

欲望输出

id  Result  Attribute   Sub_Pro     Result1     Attribute1   Sub_pro1       F_Pro
1 0.5621 0.56 0.314776 536 0.005642 3.024112 3.338888
2 0.5221 0.5677 0.29639617 2.15 93 199.95 200.2463962
3 0.024564 5.23 0.12846972 6.489 8 51.912 52.04046972
4 11.564256 4.005 46.31484528 0.45556 5.25 2.39169 48.70653528
5 0.6123 0.4798 0.29378154 0.6667 5.1 3.40017 3.69395154

最佳答案

因为您有几个名称相同的列,所以这里是使用 filter 的一种方法。要查看它是如何工作的,请在您的 df 上执行 df.filter(like='Result') 并获得名称中包含 Result 的列:

      Result    Result1
0 0.562100 536.00000
1 0.522100 2.15000
2 0.024564 6.48900
3 11.564256 0.45556
4 0.612300 0.66670

您可以创建一个包含“Sub_Pro”列的数组:

import numpy as np
arr_sub_pro = np.round(df.filter(like='Result').values* df.filter(like='Attribute').values,3)

然后您将获得 sub_pro 列的值,例如 arr_sub_pro :

array([[3.1500e-01, 3.0240e+00],
[2.9600e-01, 1.9995e+02],
[1.2800e-01, 5.1912e+01],
[4.6315e+01, 2.3920e+00],
[2.9400e-01, 3.4000e+00]])

现在您需要将它们添加到数据框中的正确位置,我认为循环 for 是必要的

for nb, col in zip( range(arr_sub_pro.shape[1]), df.filter(like='Attribute').columns):
df.insert(df.columns.get_loc(col)+1, 'Sub_pro{}'.format(nb), arr_sub_pro[:,nb])

这里我得到了 Attibut(nb) 列的位置,并在下一个位置插入了 arr_sub_pro 的 nb 列的值

要添加“F_Pro”列,您可以:

df.insert(len(df.columns), 'F_Pro', arr_sub_pro.sum(axis=1))

最终的 df 如下所示:

   Id     Result  Attribute  Sub_pro0    Result1  Attribute1  Sub_pro1  \
0 1 0.562100 0.5600 0.315 536.00000 0.005642 3.024
1 2 0.522100 0.5677 0.296 2.15000 93.000000 199.950
2 3 0.024564 5.2300 0.128 6.48900 8.000000 51.912
3 4 11.564256 4.0050 46.315 0.45556 5.250000 2.392
4 5 0.612300 0.4798 0.294 0.66670 5.100000 3.400

F_Pro
0 3.339
1 200.246
2 52.040
3 48.707
4 3.694

关于python - 乘以多列 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51065181/

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