gpt4 book ai didi

python - 在列名内循环

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:16 25 4
gpt4 key购买 nike

我有一个包含列 car_x 和 car1_y、van2_x 和 van2_y 以及 bus3_x 和 bus3_y 的数据框。我需要一个列 car1_x * car1_y + van2_x * van2_y + bus3_x * bus3_y

以下代码无效:

modes = 'car', 'van', 'bus'

for mode in modes:
df['{var}'] = df['{var}_x']*df['{var}_y']

然后我将对 df['car']、df['van'] 和 df['bus'] 求和,但上面的语法已关闭。

最佳答案

要修复您的代码,您需要使用 f-strings 让 python 知道 {var} 应该作为它的值插入,而不是字符串 "{var }”

for mode in modes:
df[f'{var}'] = df[f'{var}_x'] * df[f'{var}_y']

但这需要一个额外的求和步骤才能得到“结果”。

df['result'] = df[list(modes)].sum(axis=1)

让我们去掉额外的步骤,并在此处使用 einsum 更快地执行此操作。过滤掉您的 _x_y 列,然后使用 einsum 指定乘积运算。

x = df.filter(like='_x')
y = df.filter(like='_y')

df['result'] = np.einsum('ij,ij->i', x, y)

感谢 filter 步骤,不再需要维护单独的 modes 列表。

关于python - 在列名内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52959594/

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