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

Pandas合并DataFrame异常:所有行匹配OEM数据问题排查

问题分析与解决办法

看起来你遇到的核心问题是第一个DataFrame的Choice字段用错了——从你给出的第一个表格内容来看,每行其实包含四个数据项(ID、CustomerType、决策属性、实际选择),但你只给了三个列名,这导致Choice列存储的是Durability、Price这类用户决策时考虑的属性,而不是用来和第二个表格匹配的OEM/TPN。

为什么会出现全匹配OEM的情况?

大概率是你在读取第一个DataFrame时列分隔出了问题,比如分隔符设置错误,导致Choice列被错误地赋值成了OEM(或者部分行的属性值被错误合并,使得pandas误判了匹配关系)。但不管怎样,核心问题是你用来匹配的列不是真正的选择值列。

解决步骤

  • 修正第一个DataFrame的列结构
    先把survey的列调整成正确的四列:ID、CustomerType、Attribute(存储Durability/Price等决策属性)、Choice(存储OEM/TPN)。如果是从文本读取的,确保分隔符正确;如果已经读取进来了,直接重命名列:
    # 假设读取后的survey有四列,默认列名是['ID', 'CustomerType', 'Choice', 'Unnamed: 3']
    survey.columns = ['ID', 'CustomerType', 'Attribute', 'Choice']
    
  • 使用正确的列进行合并
    现在用真正存储OEM/TPN的Choice列去和rel_attr的Type列合并:
    data = pd.merge(survey, rel_attr, left_on='Choice', right_on='Type', how='left')
    
  • 验证结果
    修正后,行10和行12的Choice是TPN,会匹配第二个表格里的TPN行;其他行的Choice是OEM,匹配OEM行,这样就不会出现所有行都匹配OEM的情况了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:11:58