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

基于两列列值合并DataFrame:将df2指定列匹配添加至df1

基于多列完全匹配合并Pandas DataFrame的解决方案

嘿,这事儿用Pandas的merge()方法就能完美解决,它支持指定多列作为匹配键,正好符合你要基于w和x两列完全匹配来合并y、z列的需求。

步骤分解与代码示例

首先先准备好你的原始数据(补全了必要的导入部分):

import pandas as pd

# 你的两个DataFrame
df1 = pd.DataFrame({'w':['a','b','c'], 'x':['d','e','f']})
df2 = pd.DataFrame({'w':['b','a','g','c'], 'x':['h','d','i','f'],'y':['j','k','l','m'],'z':['n','o','p','q']})

接下来是核心的合并代码,我们指定w和x作为匹配键,把df2的y、z列合并到df1中:

# 左连接:保留df1的所有行,匹配df2的y、z列,无匹配则填充NaN
merged_df = pd.merge(df1, df2[['w', 'x', 'y', 'z']], on=['w', 'x'], how='left')

参数说明

  • on=['w', 'x']:明确告诉Pandas用这两列作为匹配依据,只有当两行的w和x值完全一致时才会建立匹配关系
  • how='left':采用左连接逻辑,会保留df1的所有行,哪怕在df2中找不到对应匹配的w+x组合,对应的y、z列会用NaN填充
  • df2[['w', 'x', 'y', 'z']]:提前筛选df2需要的列,避免合并后出现不必要的重复列,让结果更简洁

合并结果

运行上面的代码后,merged_df的输出如下:

w  x    y    z
0  a  d    k    o
1  b  e  NaN  NaN
2  c  f    m    q

(注:df1中第二行的w=b, x=e在df2里没有对应的匹配项,所以y、z显示为NaN)

如果你只想要保留df1中在df2里有完全匹配的行,可以把how='left'改成how='inner',这样结果会是:

w  x  y  z
0  a  d  k  o
2  c  f  m  q

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:12:07