基于两列列值合并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
相关产品推荐
相关产品推荐

