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
相关产品推荐
相关产品推荐

