我有多个数据框保存在如下所示的串联列表中。每个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
关于python - 如何使用 Pandas 数据框创建一个矩阵,该矩阵是多个矩阵的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49979759/