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

pandas merge匹配失败返回NaN时如何设置默认替换为0的更优方法?

Pandas左连接后指定列空值替换为0的优化方案
  • 方案1:指定列直接填充(适配你原有只需要替换col1/col2/col3的场景)
    直接使用pandas内置的fillna()方法,传入列名和对应填充值的字典即可,无需手动遍历列,代码更简洁,且为矢量化操作,数据量越大性能优势越明显:

    # 合并后单独填充
    df1 = pd.merge(df1, df2, on='MortTab', how='left', suffixes=(' ', ''))
    df1 = df1.fillna({'col1': 0, 'col2': 0, 'col3': 0})
    
    # 也可以直接链式调用,一行完成操作
    df1 = pd.merge(df1, df2, on='MortTab', how='left', suffixes=(' ', '')).fillna({'col1': 0, 'col2': 0, 'col3': 0})
    

    注:因为你左右连接的键名都是MortTab,可以直接用on参数省略重复的left_on/right_on写法。

  • 方案2:批量填充所有来自df2的列的空值
    如果需要替换的列都是df2中除了连接键之外的所有列,无需手动罗列列名,自动生成填充规则即可:

    # 生成df2中除连接键外的所有列的填充规则
    fill_rule = {col: 0 for col in df2.columns if col != 'MortTab'}
    df1 = pd.merge(df1, df2, on='MortTab', how='left', suffixes=(' ', '')).fillna(fill_rule)
    

补充说明:如果需要将合并后整个DataFrame的所有空值都替换为0,直接调用df1 = df1.fillna(0)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:09:03