pandas 总结多个数据帧 [英] Pandas sum multiple dataframes
本文介绍了 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
from 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
方法.
use the add
method with fill_value=0
parameter.
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)
val
a 2.0
b 4.0
c 3.0
d 3.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
val
a A -2.129724
B -1.268466
b A -1.970500
D -2.259055
df2
val
a A -0.349286
C -0.026955
b A 0.316236
C 0.348782
df1.add(df2, fill_value=0)
val
a A -2.479011
B -1.268466
C -0.026955
b A -1.654264
C 0.348782
D -2.259055
超过 2 个数据帧
from functools import reduce
df1 = pd.DataFrame({'val':{'a': 1, 'b':2, 'c':3}})
df2 = pd.DataFrame({'val':{'a': 1, 'b':2, 'd':3}})
df3 = pd.DataFrame({'val':{'e': 1, 'c':2, 'd':3}})
df4 = pd.DataFrame({'val':{'f': 1, 'a':2, 'd':3}})
df5 = pd.DataFrame({'val':{'g': 1, 'f':2, 'd':3}})
reduce(lambda a, b: a.add(b, fill_value=0), [df1, df2, df3, df4, df5])
val
a 4.0
b 4.0
c 5.0
d 12.0
e 1.0
f 3.0
g 1.0
这篇关于 pandas 总结多个数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文