gpt4 book ai didi

python - Pandas 求和多个数据框

转载 作者:太空狗 更新时间:2023-10-29 17:45:45 25 4
gpt4 key购买 nike

我有多个数据框,每个数据框都有一个多级索引和一个值列。我想将值列上的所有数据帧相加。

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

最佳答案

使用带有 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)

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com