如何按索引相加两个Pandas DataFrame且不产生NaN值
按索引合并相加Pandas DataFrame(保留所有索引)
直接用+运算符会因索引对齐缺失产生NaN,要实现保留所有索引并按索引相加的需求,使用Pandas的add()方法并指定fill_value=0即可解决。
示例代码
import pandas as pd # 构造示例DataFrame df1 = pd.DataFrame( {'Column1': [1, 2, 3], 'Column2': [4, 5, 6]}, index=['Item1', 'Item3', 'Item2'] ) df2 = pd.DataFrame( {'Column1': [1, 2], 'Column2': [3, 4]}, index=['Item1', 'Item2'] ) # 按索引相加,缺失值填充为0 combined_df = df1.add(df2, fill_value=0) print(combined_df)
运行结果
Column1 Column2 Item1 2.0 7.0 Item2 5.0 10.0 Item3 2.0 5.0
原理说明
add()方法会自动对齐两个DataFrame的索引和列fill_value=0参数会将仅在单个DataFrame中存在的索引/列位置填充为0,相加时不会产生NaN,直接保留原DataFrame中的数值(x + 0 = x)- 结果为浮点数是Pandas算术运算的默认行为,若需要整数类型,可追加
combined_df = combined_df.astype(int)转换
内容的提问来源于stack exchange,提问作者Buracku
相关产品推荐
相关产品推荐

