如何在Pandas中基于两列实现DataFrame的Merge/Join左连接?
Pandas基于多列实现Left Join的方法
你可以直接使用Pandas的merge()函数,通过指定左右表的匹配列对,并设置连接类型为left来实现需求。
示例代码
首先构造你的示例数据:
import pandas as pd # 构造df1 df1 = pd.DataFrame({ 'key': [1, 23], 'atTime': [3, 8], 'c': [4, 3], 'd': ['a', 'g'], 'e': [100, 230] }) # 构造df2 df2 = pd.DataFrame({ 'xkey': [30, 1], 'xatTime': [2, 3], 'z': ['p', 'l'] })
执行多列左连接:
resultDF = pd.merge( df1, df2, left_on=['key', 'atTime'], right_on=['xkey', 'xatTime'], how='left' ).drop(columns=['xkey', 'xatTime']) # 移除右表重复的匹配列
参数说明
left_on:指定左表(df1)用于匹配的列,这里是['key', 'atTime']right_on:指定右表(df2)对应的匹配列,这里是['xkey', 'xatTime']how='left':明确使用左连接,保留df1的所有行,df2中无匹配的行对应列填充NaN- 最后用
drop()移除右表的匹配列(因为左表已经有相同含义的列),让结果和你预期的结构一致
最终结果
运行后resultDF的输出如下:
key atTime c d e z 0 1 3 4 a 100 l 1 23 8 3 g 230 NaN
内容的提问来源于stack exchange,提问作者Amin
相关产品推荐
相关产品推荐

