pandas 对多个数据框求和 [英] Pandas sum multiple dataframes

查看:84
本文介绍了 pandas 对多个数据框求和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个数据框,每个数据框都有一个多级索引和一个值列.我想在值列上添加所有数据框.

I have multiple dataframes each with a multi-level-index and a value column. I want to add up all the dataframes on the value columns.

df1 + df2

不是每个数据帧中的所有索引都完整,因此我在所有数据帧中都不存在的行上获取了nan.

Not all the indexes are complete in each dataframe, hence I am getting nan on a row which is not present in all the dataframes.

我该如何克服这个问题,并将任何数据框中不存在的行都视为值为0?

How can I overcome this and treat rows which are not present in any dataframe as having a value of 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

推荐答案

使用带有fill_value=0参数的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)

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)

这篇关于 pandas 对多个数据框求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆