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

Python中合并含相同键同列异值的DataFrame(保留全量ID)

Pandas DataFrame 合并:以df2为准更新Name字段

原始数据

我们有两个DataFrame:

  • df1包含全部ID,部分Name字段为空:
import pandas as pd

df1 = pd.DataFrame({'id': ['A01', 'A02', 'A03', 'A04', 'A05', 'A06','A07'],
                    'Name': ['', '', '', '', 'MKI', 'OPU','']})
  • df2包含部分ID,对应Name值与df1可能不同:
df2 = pd.DataFrame({'id': ['A01', 'A05', 'A06', 'A03'],
                    'Name': ['ABC', 'TUV', 'MNO', 'JKL']})

需求

保留df1的全部ID,以df2为基准更新Name字段:

  • 若df1中Name为空,用df2的对应值替换
  • 若两者Name均有值,优先使用df2的值

解决方案

通过左连接合并两个DataFrame,然后按优先级生成新的Name字段:

# 左连接合并,保留df1所有ID
merged = df1.merge(df2, on='id', how='left', suffixes=('_df1', '_df2'))

# 优先取df2的Name,无对应值则保留df1的Name
merged['Name'] = merged['Name_df2'].fillna(merged['Name_df1'])

# 提取目标列得到最终结果
df3 = merged[['id', 'Name']].reset_index(drop=True)

# 输出结果
print(df3)

最终结果

执行后得到的df3如下:

id Name
0  A01  ABC
1  A02     
2  A03  JKL
3  A04     
4  A05  TUV
5  A06  MNO
6  A07     

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:55:18