如何基于B、C列匹配合并两个Pandas DataFrame?
基于多列匹配合并Pandas DataFrame
你可以使用Pandas的merge()函数,通过指定匹配列(B和C)实现需求,无需依赖索引匹配。具体代码如下:
import pandas as pd # 定义原始DataFrame df1 = pd.DataFrame({'A': [2, 3, 4], 'B': [5, 6, 7], 'C': [8, 9, 0]}) df2 = pd.DataFrame({'B': [6, 7, 5], 'C': [9, 0, 8], 'D': [1, 6, 2]}) # 基于B、C列匹配合并,保留df1的全部行结构 df3 = pd.merge(df1, df2, on=['B', 'C'], how='left') print(df3) # 输出结果与期望一致: # A B C D # 0 2 5 8 2 # 1 3 6 9 1 # 2 4 7 0 6
关键参数说明
on=['B', 'C']:明确指定以B和C两列作为匹配键,只有当两行的B、C值完全相同时才会合并,彻底避开索引不匹配的问题。how='left':以df1为基准保留所有行,同时将df2中匹配到的D列值对应填充。如果df1存在B、C组合在df2中无匹配项,对应D列会显示NaN(你的示例中所有组合均能匹配,因此无此情况)。
内容的提问来源于stack exchange,提问作者Jeroen
相关产品推荐
相关产品推荐

