Pandas合并不同长度数据集:保留左表全量行并匹配右表字段
问题原因
你之前的两种写法返回仅800行的核心原因是都使用了**内连接(inner)**逻辑:内连接只会保留两个表中Name字段取值一致的交集数据,自然行数和更小的df2对齐。
正确实现方法
方法1:使用merge左连接(最推荐)
左连接(how='left')会完整保留左表(此处即放在前面的df1)的所有行,右表df2中匹配不到的字段自动填充空值,完全符合你的需求:
df = df1.merge(df2, how='left', on='Name')
运行后返回的df行数就是df1的1200行,df2缺失的姓名对应的Country、Telephone字段会自动留空。
方法2:使用join方法
如果偏好基于索引拼接,可使用join方法指定左连接逻辑:
df = df1.set_index('Name').join(df2.set_index('Name'), how='left').reset_index()
内容的提问来源于stack exchange,提问作者LdM
相关产品推荐
相关产品推荐

