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

多数据框的元素级加权平均实现方法问询

多数据框的元素级加权平均实现方法问询

嘿,这个问题我之前刚好处理过,给你个简洁又通用的解决方案!

你提到的场景很典型:已经知道怎么用sum(list_of_dfs)/len(list_of_dfs)求普通元素级平均,但现在要换成加权版本,而且数据框数量太多,没法手动逐个写df*权重再相加。

核心解法:配对权重与数据框后求和

你可以用zip()把数据框列表和权重数组一一配对,然后通过生成器表达式逐个计算数据框*对应权重,最后把所有结果加起来就行,不管数据框有多少个都适用:

import pandas as pd
import numpy as np

# 示例数据(替换成你自己的DataFrame列表即可)
df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])
df3 = pd.DataFrame([[9, 10], [11, 12]])
list_of_dfs = [df1, df2, df3]

# 你的权重数组
W = np.array([0.2, 0.3, 0.5])

# 计算元素级加权平均
weighted_avg_df = sum(df * w for df, w in zip(list_of_dfs, W))

原理说明

  • zip(list_of_dfs, W)会把每个DataFrame和对应的权重精准配对,比如第一个配对是(df1, 0.2),第二个是(df2, 0.3),以此类推
  • 生成器表达式df * w for df, w in ...会逐个算出每个数据框加权后的结果
  • 最后用sum()把所有加权后的DataFrame按元素相加,就得到了最终的加权平均数据框

这个方法既简洁又高效,完全不用操心数据框的数量,不管是3个还是30个都能轻松处理~

备注:内容来源于stack exchange,提问作者younggotti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:09:06