我有多个数据框,每个数据框都有一个多级索引和一个值列。我想在值列上添加所有数据框。
df1 + df2
并非每个数据帧中的所有索引都是完整的,因此我进入nan了所有数据帧中都不存在的行。
nan
我该如何克服这个问题并将任何数据框中不存在的行都视为值为0?
例如。我想得到
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}})而不是
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
使用add带fill_value=0参数的方法。
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)