我有多个数据帧,每个数据帧有一个多级索引和一个值列。我想把值列上的所有数据帧相加。
df1 + df2
并非每个数据帧中的所有索引都是完整的,因此我得到的是一行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}})而不是
   val
a    2
b    4
c  NaN
d  NaN

最佳答案

使用带参数的add方法。

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)

python - Pandas将多个数据帧相加-LMLPHP
多索引示例
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

python - Pandas将多个数据帧相加-LMLPHP
df2

python - Pandas将多个数据帧相加-LMLPHP
df1.add(df2, fill_value=0)

python - Pandas将多个数据帧相加-LMLPHP

关于python - Pandas将多个数据帧相加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38472276/

10-13 03:28