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

Pandas左连接合并DataFrame时产生NaN值问题求助

Pandas左连接后出现全NaN的解决方案

核心排查与解决方法

  1. 检查连接键数据类型一致性
    若Customer列的数据类型不一致(比如一个是字符串、一个是数值类型),会直接导致匹配失败。先执行代码确认类型:

    print(df1['Customer'].dtype)
    print(df2['Customer'].dtype)
    

    若类型不统一,将两列都转为字符串类型:

    df1['Customer'] = df1['Customer'].astype(str)
    df2['Customer'] = df2['Customer'].astype(str)
    
  2. 清理连接键隐藏字符
    有时候Customer列看起来是相同的字符,实际包含前后空格、换行符等隐藏内容,也会造成匹配失效。执行代码清理:

    df1['Customer'] = df1['Customer'].str.strip()
    df2['Customer'] = df2['Customer'].str.strip()
    
  3. 处理列名重复问题
    你提供的两个DataFrame都有Margin Percent列,合并后Pandas会自动给列名加上_x(来自df1)和_y(来自df2)的后缀。如果需要自定义后缀,可使用suffixes参数:

    merged_df = df1.merge(df2, on=["Customer"], how='left', suffixes=('_df1', '_df2'))
    

    另外注意:你给出的输出里出现了Win Ratio列,但提供的df2列名为Margin Percent,若实际df2的目标列是Win Ratio,请确认合并时的列名对应关系是否正确。

验证操作

修改后重新执行合并代码,查看结果:

merged_df = df1.merge(df2, on=["Customer"], how='left')
print(merged_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:45:28