Python Pandas如何合并两个DataFrame:相同索引行求和,保留唯一索引
实现方案
直接使用pandas原生的索引对齐加法逻辑即可,底层为矢量化实现,性能极高,哪怕数千列的规模也能快速输出结果,不需要编写循环或复杂的拼接分组逻辑:
df3 = df1.add(df2, fill_value=0).sort_index()
逻辑说明
add方法会自动对齐两个DataFrame的行索引和列名:- 两个表共有的索引行,会自动逐列执行求和运算,完全匹配同索引行逐列相加的要求
- 仅在单个表中存在的独有索引,另一个表对应位置的对齐缺失值会被
fill_value=0填充为0,相加后等价于原样保留原有行的数值,不会产生空值
- 末尾的
sort_index()会将最终结果按整数索引升序排列,和两个原始DataFrame的有序索引规则完全一致,输出结构和你给出的预期df3完全匹配。
注意:如果原始数据本身存在业务层面的空值,需要提前按业务规则填充,
fill_value=0仅会处理两个表对齐时产生的位置缺失,不会修改原始数据自带的空值。
性能说明
该方案为pandas底层C实现的原生运算,无Python层循环开销,不管是数千列还是十万级以上行数,运行效率都远高于「先拼接两个表再按索引分组求和」的实现,内存占用也更低。
内容的提问来源于stack exchange,提问作者T.A. Anderson
相关产品推荐
相关产品推荐

