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

基于两列合并Pandas DataFrame且避免生成_x、_y后缀的替代方案求解

解决方案

你可以通过先删除df1中原有Place列再合并的方式,完全避免生成带_x/_y后缀的中间列,一行代码即可实现和你需求完全一致的结果:

# df1、df2的定义保持不变
df_merge = df1.drop(columns='Place').merge(df2, on=['Month', 'Temp'], how='left').fillna({'Place': 0})

其他场景补充

如果你后续有其他类似需求,需要匹配到的行用df2的Place值,未匹配的行保留df1原有Place值而非统一填0,可以用update方法实现,同样不会生成中间后缀列:

# 先将公共匹配列设为索引
df1_idx = df1.set_index(['Month', 'Temp'])
df2_idx = df2.set_index(['Month', 'Temp'])
# 用df2的数值覆盖df1匹配到的行
df1_idx.update(df2_idx)
# 恢复普通列结构
df_merge = df1_idx.reset_index()

原代码逻辑说明

你原有代码中先执行fillna(0)再判断pd.isnull(x['Place_y'])的逻辑实际不会生效,因为所有NaN已经被替换为0,所以最终Place列实际完全取的是df2填充0后的值,和上述第一种方案逻辑完全一致。


内容的提问来源于stack exchange,提问作者A.M. Ducu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 17:39:02