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

标签 python arrays pandas numpy matrix

我有多个数据框保存在如下所示的串联列表中。每个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/

相关文章:

php - Codeigniter 将数据表传输到表

ios - 在方法之间传递数组中的数据

python - 推断哪些列是日期时间

使用 Dill 加载对象时出现 Python TypeError

python - 如何将 pandas DataFrame 的日期时间索引作为 isoDate 类型的字段插入 mongodb

.net - 用于修改面孔的图像处理库/API

python - 将 Pandas Dataframe 转换为嵌套字典

python - Django 1.10 : base_site. html 覆盖不起作用

javascript - 纯javascript,过滤框无法正确过滤

python - Pandas keep_default_na=False 不起作用