You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将df_a每个值与df_b所有值相乘求和并生成结果列表?

问题描述

我需要将DataFrame df_a 中的每个值与另一个DataFrame df_b 中的所有值相乘,对每个df_a值对应的乘积求和,最终将结果组成列表。

示例:
df_a:

col_x
10
20

df_b:

col_y
5
6

预期结果:[110, 220](即 [(10×5)+(10×6), (20×5)+(20×6)])

我尝试用for循环实现:

a = []
for x, y in zip(df_a, df_b):
    i = sum(x * y)
    a.append(i)

但运行时抛出“float object not being iterable”错误。

解决方案

方法1:利用Pandas向量化运算(推荐)

借助数学简化思路:x*y1 + x*y2 = x*(y1+y2),先算出df_b的总和,再和df_a的每个元素相乘,最后转成列表即可,这种方法效率远高于循环:

df_b_total = df_b['col_y'].sum()
result = (df_a['col_x'] * df_b_total).tolist()

执行后result即为[110, 220],完全符合预期。

方法2:修正for循环逻辑

你之前的错误源于zip(df_a, df_b)迭代的是DataFrame的列名,而非列中的具体数值。正确的做法是遍历df_a目标列的每个元素,再与df_b的所有元素相乘后求和:

a = []
for x_val in df_a['col_x']:
    product_sum = (x_val * df_b['col_y']).sum()
    a.append(product_sum)

运行这段代码就能得到正确结果,不会再出现迭代错误。

内容的提问来源于stack exchange,提问作者Barnaby Cooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:50:37