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

如何计算索引匹配的DataFrame对应行的标量积

Pandas 索引匹配行标量积计算方案

测试数据构造

先复现题目中的两个DataFrame:

import pandas as pd

# 索引为唯一值的第一个DataFrame
df1 = pd.DataFrame(
    data={"column1": [1, 4, 3], "column2": [2, 5, 3]},
    index=["a", "b", "c"]
)

# 索引存在重复值的第二个DataFrame
df2 = pd.DataFrame(
    data={"column1": [1, 4, 3, 1, 4, 3], "column2": [2, 5, 3, 2, 5, 3]},
    index=["a", "a", "c", "b", "b", "a"]
)

实现代码

直接利用pandas自带的索引对齐机制即可,无需手写循环,运行效率高:

result = df2.mul(df1).sum(axis=1).to_frame(name="result")

结果说明

运行后得到的result完全符合要求:

  • 行索引和原始df2完全一致,保留重复索引和原有顺序
  • 列值为对应索引匹配行的标量积,比如索引为a的第一行,计算逻辑为1*1 + 2*2 = 5,和预期一致
    输出结果如下:
result
a       5
a      14
c      18
b      14
b      41
a       9

逻辑解释

  • df2.mul(df1)会自动按行索引做对齐:df2的每一行都会匹配df1中相同索引的行,对两列对应位置做乘法,哪怕df2索引重复也能正确匹配
  • sum(axis=1)对乘法结果逐行求和,得到的就是两个等长向量的标量积
  • to_frame(name="result")将求和得到的Series转为单列DataFrame,设置列名为要求的result

内容的提问来源于stack exchange,提问作者Ryszard Eggink

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:15:44