在Pandas中基于不同名称列实现左连接的方法
Pandas基于指定列实现左连接
首先是你给出的两个DataFrame定义:
import pandas as pd left = pd.DataFrame( {"A": ["A0", "A1", "A2"], "B": ["B0", "B1", "B2"]} ) right = pd.DataFrame( {"C": ["A0", "A1", "A2"], "D": ["D0", "D2", "D3"]} )
要基于left的A列和right的C列做左连接,直接用Pandas的merge方法指定连接规则,再调整列顺序就能得到预期输出:
# 执行左连接,指定左右表的匹配列 merged_df = pd.merge(left, right, how='left', left_on='A', right_on='C') # 筛选需要的列并调整顺序,移除多余的C列 result_df = merged_df[['B', 'D', 'A']] # 输出结果 print(result_df)
运行后得到的结果:
B D A 0 B0 D0 A0 1 B1 D2 A1 2 B2 D3 A2
关键参数说明
how='left':保证保留左表(left)的所有行,右表无匹配的行会自动填充NaN(本次示例所有行均能匹配)left_on='A':指定左表用于匹配的列right_on='C':指定右表用于匹配的列
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

