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

Pandas中基于相同ID列匹配实现多列数值相乘的问题求解

问题解决实现方案

核心逻辑说明

你原有代码的匹配逻辑是对的,默认按公共列ID做内连接匹配,仅需要调整写法适配「生成新DataFrame」的需求,同时避免原写法可能出现的长度不匹配报错。

实现代码

方案1:仅保留双表共有的匹配ID(内连接)

适用于不需要保留未匹配ID的场景:

# 写法1:分步写更易读
# 按ID匹配,仅取需要参与计算的列避免冗余
result_df = df1[["ID", "number"]].merge(df2[["ID", "mult"]], on="ID")
# 计算乘积列
result_df["soln"] = result_df["number"] * result_df["mult"]

# 写法2:和你原有风格一致的链式写法
result_df = df1.merge(df2, on="ID").assign(soln=lambda df: df.number * df.mult)

方案2:保留df1全部ID(左连接)

适用于需要保留df1所有行,未匹配到df2的行乘积为空的场景:

result_df = df1.merge(df2[["ID", "mult"]], on="ID", how="left")
result_df["soln"] = result_df["number"] * result_df["mult"]

注意事项

  • 请提前确认df2的ID列无重复值,否则单条df1行可能匹配多条df2行,导致结果行数超出预期
  • 如果需要保留双表所有ID,可将merge的how参数改为outer,未匹配行的乘积值为NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:57:01