我有多个数据帧,每个数据帧都有一个多级索引和一个值列。我想在值列上添加所有数据帧。
df1 + df2
并非所有索引都在每个数据帧中都是完整的,因此我在所有数据帧中都不存在的行上获得nan
。
如何克服这一点并将任何数据帧中不存在的行视为值为0?
EG。我想得到
val
a 2
b 4
c 3
d 3
来自pd.DataFrame({'val':{'a': 1, 'b':2, 'c':3}}) + pd.DataFrame({'val':{'a': 1, 'b':2, 'd':3}})
而不是
val
a 2
b 4
c NaN
d NaN
答案 0 :(得分:11)
将add
方法与fill_value=0
参数一起使用。
df1 = pd.DataFrame({'val':{'a': 1, 'b':2, 'c':3}})
df2 = pd.DataFrame({'val':{'a': 1, 'b':2, 'd':3}})
df1.add(df2, fill_value=0)
idx1 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'B'), ('b', 'A'), ('b', 'D')])
idx2 = pd.MultiIndex.from_tuples([('a', 'A'), ('a', 'C'), ('b', 'A'), ('b', 'C')])
np.random.seed([3,1415])
df1 = pd.DataFrame(np.random.randn(4, 1), idx1, ['val'])
df2 = pd.DataFrame(np.random.randn(4, 1), idx2, ['val'])
df1
df2
df1.add(df2, fill_value=0)