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

如何用pandas.merge关联df3与df,为每条评分记录匹配电影详情?

电影推荐系统:Pandas数据框合并解决方案

正确合并代码

要实现保留df3全部行、匹配df中电影详情的需求,**左连接(left join)**是精准的解决方案,以下是可靠实现代码:

import pandas as pd

# 核心逻辑:按电影ID列左连接,完全保留df3的所有行
merged_df = df3.merge(df, on='id', how='left')

你的尝试失败原因分析

  1. join方法适配问题:join默认按索引合并,若df的id列不是索引,会直接匹配失败;且当两表存在重复列名时,未指定后缀会触发冲突报错。
  2. 错误使用right连接:how='right'会保留df的所有行,最终行数与df一致,完全不符合你要和df3行数相同的需求。
  3. suffixes=None参数违规:当两表存在连接列之外的同名列时,suffixes必须指定后缀(如('_left', '_right')),设为None会直接抛出参数错误。

额外排查步骤

如果上述代码仍未解决问题,检查以下两个关键点:

  • 列名一致性:确认df3和df中存储电影ID的列名是否完全一致(比如df3是movie_id,df是id),若不一致需显式指定:
    merged_df = df3.merge(df, left_on='movie_id', right_on='id', how='left')
    
  • 去重df中的电影ID:若df存在重复的电影ID记录,合并后行数会超过df3,需先对df去重:
    df = df.drop_duplicates(subset='id', keep='first')
    merged_df = df3.merge(df, on='id', how='left')
    

结果验证

合并后执行以下代码确认行数符合要求:

print(len(merged_df) == len(df3))  # 返回True则表示符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:55:20