按指定列匹配合并两个同结构DataFrame的最优方法
实现方法
直接用pandas内置功能就能实现,不需要自定义函数或者硬编码列名,两种可选方案如下:
方案1:直接用merge的suffix参数(默认合并后仅保留1个a列)
如果不需要重复保留两个值完全相同的a列,用这个最简洁:
import pandas as pd # 核心合并逻辑 new_df = pd.merge( left=df1, right=df2, on="a", # 指定按a列匹配 how="inner", # 仅保留两张表都存在的a值对应行 suffixes=("_1", "_2") # 自动给重名列加对应后缀 )
方案2:预加后缀后合并(完全匹配你的预期输出格式)
如果需要保留两个带后缀的a列,和你给出的示例输出完全一致,用这个方案:
# 先给两个表所有列批量加后缀 df1_suf = df1.add_suffix("_1") df2_suf = df2.add_suffix("_2") # 按两个表的a列匹配合并 new_df = pd.merge( left=df1_suf, right=df2_suf, left_on="a_1", right_on="a_2", how="inner" )
输出的new_df列顺序为a_1, b_1, c_1, a_2, b_2, c_2,和你给出的预期效果完全一致,且不管后续两个表的列怎么新增、调整,只要结构一致都能直接复用这段代码。
内容的提问来源于stack exchange,提问作者Dmitry Shevchenko
相关产品推荐
相关产品推荐

