如何在Pandas中实现DataFrame行元素与列元素逐乘后求和?
解决方法
首先提取df1的第一行数据,用df1.iloc[0]即可得到包含value_1到value_4的Series。
接着提取df2中coeff_1列的前4个元素(对应你示例里的计算需求),可以用df2['coeff_1'].iloc[:4]。
下面是两种简洁的实现方式:
方式一:逐元素相乘后求和
# 提取目标数据 row_df1 = df1.iloc[0] coeffs = df2['coeff_1'].iloc[:4] # 计算结果 total = (row_df1 * coeffs).sum()
运行后total的值为 1*1 + 2.5*0 + 3*1 + 5.5*1 = 9.5。
方式二:使用点积运算
Series本质是一维数组,直接用点积@可以一步完成逐元素相乘求和:
total = df1.iloc[0] @ df2['coeff_1'].iloc[:4]
这个结果和方式一完全相同,代码更简洁。
注意点
- 必须保证两个序列的长度一致,否则会触发长度不匹配的错误。如果你的实际需求有变化,要对应调整提取的元素数量。
内容的提问来源于stack exchange,提问作者madpynoob
相关产品推荐
相关产品推荐

