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

Pandas如何按条件合并DataFrame并向指定列追加数据?

解决方案

核心思路

直接利用外连接生成的两个Statement重名列做合并即可,无需做二次合并,规则完全匹配你的需求:优先取n_df的Statement值,n_df无对应Codes时自动取p_df的Statement值。

实现代码

# 1. 基于Codes字段做外连接
merged_df = pd.merge(n_df, p_df, how='outer', on='Codes')

# 2. 合并Statement列,优先取n_df的取值,n_df无值时取p_df的取值
merged_df['Statement'] = merged_df['Statement_x'].combine_first(merged_df['Statement_y'])

# 3. 删除外连接生成的多余Statement列
merged_df = merged_df.drop(columns=['Statement_x', 'Statement_y'])

# 可选:调整列顺序,和原n_df的结构对齐,保留n_df原有其他字段
col_order = ['Statement', 'Codes'] + [col for col in n_df.columns if col not in ['Statement', 'Codes']] + ['Other_Codes']
merged_df = merged_df[col_order]

效果验证

针对你提供的示例数据,最终输出的merged_df核心字段结果如下:

StatementCodesOther_Codes
Statement 1CD.Ex-1NaN
Statement 2CD.Ex-2NC.b
Statement 3CD.Ex-3NaN
Statement 4CD.Ex-4NC.d
Statement 5CD.Ex-5NaN
Statement ACD.Ex-ANC.a
Statement BCD.Ex-BNC.c
Statement CCD.Ex-CNC.e

完全符合你的4项需求:

  • 基于Codes完成合并,保留所有存在于两个表的Codes
  • p_df独有Codes自动追加到结果表
  • p_df独有Codes对应的Statement、Other_Codes同步保留
  • 同Codes的Statement冲突时优先取n_df的取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:03