You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas DataFrame实现多个矩阵(DataFrame)求和?

嘿,我来帮你理清这个问题!

解决多个矩阵DataFrame求和的问题

一、无需循环的多DataFrame矩阵求和方法

你不需要手动写循环来逐个相加,有几种简洁的方式可以实现多个矩阵DataFrame对应位置元素的求和:

方法1:用functools.reduce结合add

把所有要相加的DataFrame放到一个列表里,然后用reduce把add方法批量应用到整个列表上,fill_value=0还能处理可能存在的索引/列不匹配的情况(不过你的矩阵应该是结构一致的):

from functools import reduce
import pandas as pd

# 假设你的原始DataFrame列表是dfs = [df1, df2, df3, ...]
total_df = reduce(lambda x, y: x.add(y, fill_value=0), dfs)

方法2:借助NumPy数组求和

如果所有DataFrame的索引和列完全一致,可以先把它们转成NumPy数组,求和后再转回DataFrame,这种方式效率也很高:

import numpy as np
import pandas as pd

dfs = [df1, df2, df3, ...]
sum_array = np.sum([df.values for df in dfs], axis=0)
total_df = pd.DataFrame(sum_array, index=dfs[0].index, columns=dfs[0].columns)

二、为什么my_df.sum()会得到混乱结果?

你之前用pd.concat([df1, df2, df3, ...])得到的my_df,本质是把多个矩阵按行堆叠(默认axis=0),相当于把每个矩阵的所有行都接在一起,变成一个行数是所有原始DataFrame行数总和的大表。

这时候调用my_df.sum(),默认是按列对所有行的元素求和,得到的是每一列所有行的累加值,而不是你想要的「多个矩阵对应位置元素相加」的结果,所以看起来混乱。

比如,假设每个原始df是2行2列的矩阵,concat后my_df是6行2列,sum()会得到2个值(每列的总和),而不是一个2行2列的求和矩阵。

内容的提问来源于stack exchange,提问作者catris25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:02:02