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

Pandas中ne方法对比相同DataFrame时出现True的原因排查

排查DataFrame对比中erp_factor列返回True的问题

以下是几种常见原因及对应的排查、解决方法:

  • 数据类型不匹配:数值外观一致但类型不同(比如int和float、字符串和数值)会导致ne判定为不等。
    排查:执行print(dataframe1['erp_factor'].dtype, dataframe2['erp_factor'].dtype)查看类型差异
    解决:统一列类型,例如dataframe1['erp_factor'] = dataframe1['erp_factor'].astype(float)

  • 浮点数精度误差:浮点型数据可能因二进制存储特性存在肉眼不可见的精度差(比如0.1+0.2≠0.3)。
    排查:直接打印具体值或计算差值:

    print(dataframe1.loc[1, 'erp_factor'], dataframe2.loc[1, 'erp_factor'])
    print(dataframe1.loc[1, 'erp_factor'] - dataframe2.loc[1, 'erp_factor'])
    

    解决:用精度容忍的方式对比,替换原代码:

    import numpy as np
    df1_dedup = dataframe1.drop_duplicates(keep="first").reset_index(drop=True)
    df2_dedup = dataframe2.drop_duplicates(keep="first").reset_index(drop=True)
    neDF = ~np.isclose(df1_dedup['erp_factor'], df2_dedup['erp_factor'])
    
  • 字符串含隐藏字符:字符串类型可能存在空格、换行符、全角/半角差异等肉眼不可见的字符。
    排查:用repr显示原始字符串:

    print(repr(dataframe1.loc[1, 'erp_factor']), repr(dataframe2.loc[1, 'erp_factor']))
    

    解决:清洗字符串,例如dataframe1['erp_factor'] = dataframe1['erp_factor'].str.strip()

  • 去重后行匹配错误:两个DataFrame的重复项分布不同,导致去重后的第2行对应原数据的不同记录。
    排查:直接打印去重后对应位置的值:

    print(dataframe1.drop_duplicates(keep="first")['erp_factor'].iloc[1])
    print(dataframe2.drop_duplicates(keep="first")['erp_factor'].iloc[1])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:10:31