pandas中合并行列双轴部分重叠的多个DataFrame的最优方法
双轴重叠DataFrame合并最佳实践
你当前使用的concat+groupby.mean()方案仅能适配数值类型数据集,且存在不必要的算术计算开销,针对你明确重叠位置数值完全一致的场景,有更通用高效的实现:
1. 双DataFrame场景最优方案:combine_first
pandas原生提供的combine_first方法就是为双轴重叠数据补全设计的,重叠位置保留现有值(因重叠值一致,前后顺序不影响最终结果),非重叠位置自动补全双方的行、列数据,仅需一行代码:
res = df1.combine_first(df2)
直接输出你期望的结果,支持字符串、布尔等所有数据类型,性能远高于聚合计算方案。
2. 多DataFrame场景通用方案:concat+groupby.first
如果需要合并3个及以上的DataFrame,用first()替代你当前使用的mean(),逻辑更合理、适配所有数据类型:
# 所有待合并的DataFrame放入列表 dfs = [df1, df2] res = pd.concat(dfs, axis=0).groupby(level=0).first()
3. 可选:重叠值一致性校验
如果要避免后续数据规则变化导致重叠值不一致未被发现,可以增加校验逻辑:
temp = pd.concat(dfs, axis=0).groupby(level=0).nunique() # 校验所有重叠位置的唯一值数量不超过1 assert (temp.max() <= 1).all(), "存在行列重叠位置值不一致的异常数据" res = pd.concat(dfs, axis=0).groupby(level=0).first()
内容的提问来源于stack exchange,提问作者fil
相关产品推荐
相关产品推荐

