pandas合并DataFrame时仅保留所需子集列的高效方法
方案1:合并前对右表做列筛选
合并时不要传入完整的df2,仅传入右表的关联键+需要保留的字段即可,这是最通用的实现方式:
df_merged = pd.merge( left=df1, right=df2[['id_1', 'city']], # 仅传入需要用到的列 left_on='id', right_on='id_1', how='left' )
如果不需要保留右表的关联键id_1,可以直接在合并后删除,或者改写下写法避免冗余字段:
# 写法1:合并后删除多余关联键 df_merged = pd.merge(df1, df2[['id_1', 'city']], left_on='id', right_on='id_1', how='left').drop(columns='id_1') # 写法2:提前把右表关联键设为索引,合并时用索引关联,就不会出现重复的关联键列 df_merged = pd.merge(df1, df2.set_index('id_1')['city'], left_on='id', right_index=True, how='left')
方案2:仅单列映射时直接用map方法
如果你只需要从df2关联获取city一列,不需要走完整的merge流程,用map方法性能更高、写法更简洁:
df1['city'] = df1['id'].map(df2.set_index('id_1')['city'])
直接在原df1上新增city列即可,结果和左连接完全一致。
内容的提问来源于stack exchange,提问作者user3447653
相关产品推荐
相关产品推荐

