Pandas多DataFrame合并时如何将多表匹配值整合为同一列
Pandas多表单列合并解决方案
方案1:使用combine_first(最简洁,适合少量表场景)
直接通过combine_first拼接所有要合并的列,自动取非空值合并为同一列:
import pandas as pd df1 = pd.DataFrame({'A':[10,20,30]}, index=[1,2,3]) df2 = pd.DataFrame({'B':[200]}, index=[2]) df3 = pd.DataFrame({'C':[300]}, index=[3]) # 核心代码 df = df1.assign(val=df2.B.combine_first(df3.C)) print(df)
输出结果:
A val 1 10 NaN 2 20 200.0 3 30 300.0
方案2:多表批量合并(适合需要合并的表数量多的场景,易扩展)
如果后续待合并的表数量较多,可以统一收集所有需要合并的列到列表中,批量处理:
# 收集所有需要合并为同一列的Series merge_cols = [df2['B'], df3['C']] # 索引对齐后取每行的非空值 merged_col = pd.concat(merge_cols, axis=1).bfill(axis=1).iloc[:, 0] # 拼接回df1 df = df1.join(merged_col.rename('val'))
两种方案新增待合并表时,只要在对应位置追加对应列即可,不需要逐个join后再手动合并多列。
内容的提问来源于stack exchange,提问作者Soon
相关产品推荐
相关产品推荐

