Skip to main content
 首页 » 编程设计

python之如何使用 Pandas 数据框创建一个矩阵,该矩阵是多个矩阵的总和

2025年05月04日22jackei

我有多个数据框保存在如下所示的串联列表中。每个df代表一个矩阵。

my_df = pd.concat([df1, df2, df3, .....]) 

如何将所有这些 df(矩阵)汇总为一个 df(矩阵)?

我找到了一个 discussion here , 但它只回答了如何使用如下代码添加两个数据框。

df_x.add(df_y, fill_value=0) 

我应该在循环中使用上面的代码,还是有更简洁的方法?

我尝试执行 print(my_df.sum()) 但得到了一个非常困惑的结果(它突然变成了一行而不是二维矩阵)。

谢谢。

请您参考如下方法:

我相信需要functools.reduce如果 list 中的每个 DataFrame 具有相同的索引和列值:

np.random.seed(2018) 
 
df1 = pd.DataFrame(np.random.choice([1,np.nan,2], size=(3,3)), columns=list('abc')) 
df2 = pd.DataFrame(np.random.choice([1,np.nan,3], size=(3,3)), columns=list('abc')) 
df3 = pd.DataFrame(np.random.choice([1,np.nan,4], size=(3,3)), columns=list('abc')) 
print (df1) 
     a    b    c 
0  2.0  2.0  2.0 
1  NaN  NaN  1.0 
2  1.0  2.0  NaN 
 
print (df2) 
     a    b    c 
0  NaN  NaN  1.0 
1  3.0  3.0  3.0 
2  NaN  1.0  3.0 
 
print (df3) 
     a    b    c 
0  4.0  NaN  NaN 
1  4.0  1.0  1.0 
2  4.0  NaN  1.0 
 
from functools import reduce 
 
my_df = [df1,df2, df3] 
 
df = reduce(lambda x, y: x.add(y, fill_value=0), my_df) 
print (df) 
     a    b    c 
0  6.0  2.0  3.0 
1  7.0  4.0  5.0 
2  5.0  3.0  4.0