本文详解如何在 pandas dataframe 中对含 nan 的数据进行加权平均计算:跳过 nan 对应的权重,仅用有效值对应的权重之和作为分母,避免将 nan 视为 0 导致分母恒定、结果失真。
在使用 Pandas 进行加权统计时,一个常见误区是直接用 df.mul(weights).sum() / weights.sum() —— 这种写法会隐式将 NaN 对应的权重保留并参与分母计算,导致分母固定为全部权重之和(如示例中的 14),而分子中 NaN 项被当作 0 处理,最终结果在含 NaN 的行上被低估或错误平滑。
正确的做法是:让权重与数据“同步失效”。即仅保留数据非空(notna())位置上的权重,其余位置权重置为 0。这样,加权和的分子与分母均只反映实际有效观测。
具体实现分两步:
构造掩码权重矩阵:利用 df.notna() 生成布尔 DataFrame,再与权重 Series 按行广播相乘,得到与 df 形状一致、NaN 位置权重为 0 的加权掩码:
weights_masked = df.notna().mul(s, axis=0)
计算动态加权平均:用原始数据乘以掩码权重求和(自动忽略 NaN),再逐列除以该列对应的有效权重和:
result = df.mul(weights_masked).sum().div(weights_masked.sum(axis=0))
完整可运行示例:
import pandas as pd
import numpy as np
# 构造示例数据
df = pd.DataFrame({
1: [100, 150, 175],
2: [200, 250, 275],
3: [300, np.nan, 375]
}, index=[1, 2, 3])
s = pd.Series([3, 4, 7], index=[1, 2, 3])
# 正确计算:权重随 NaN 动态屏蔽
weights_masked = df.notna().mul(s, axis=0)
result = df.mul(weights_masked).sum().div(weights_masked.sum(axis=0))
print(result.round(2))
# 输出:
# 1 151.79
# 2 251.79
# 3 352.50
# dtype: float64✅ 关键要点总结:
⚠️ 注意事项:若需结果为 DataFrame(而非 Series),可用 result.to_frame().T 转置;若原始数据含全 NaN 列,weights_masked.sum(axis=0) 可能为 0,需额外处理除零警告(例如 .replace(0, np.nan))。
# app
# pandas
# 循环
# 掩码
# 布尔
# 跳过
# 加权平均
# 有效值
# 原始数据
# 而非
# 能为
# 中对
# 仅用
相关文章:
如何确认建站备案号应放置的具体位置?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
网站制作公司排行榜,四大门户网站排名?
Android滚轮选择时间控件使用详解
专业公司网站制作公司,用什么语言做企业网站比较好?
如何零基础开发自助建站系统?完整教程解析
深圳网站制作的公司有哪些,dido官方网站?
制作农业网站的软件,比较好的农业网站推荐一下?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何在景安服务器上快速搭建个人网站?
建站之星安装后如何自定义网站颜色与字体?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
网站代码制作软件有哪些,如何生成自己网站的代码?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
高防服务器租用首荐平台,企业级优惠套餐快速部署
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
建站主机空间推荐 高性价比配置与快速部署方案解析
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
平台云上自主建站:模板化设计与智能工具打造高效网站
南京网站制作费用,南京远驱官方网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何通过虚拟主机空间快速建站?
C#如何使用XPathNavigator高效查询XML
如何通过可视化优化提升建站效果?
一键网站制作软件,义乌购一件代发流程?
如何通过万网虚拟主机快速搭建网站?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
临沂网站制作公司有哪些,临沂第四中学官网?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
,巨量百应是干嘛的?
相册网站制作软件,图片上的网址怎么复制?
建站之星图片链接生成指南:自助建站与智能设计教程
c# 在高并发下使用反射发射(Reflection.Emit)的性能
高性能网站服务器配置指南:安全稳定与高效建站核心方案
建站org新手必看:2024最新搭建流程与模板选择技巧
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
家庭服务器如何搭建个人网站?
javascript基本数据类型及类型检测常用方法小结
存储型VPS适合搭建中小型网站吗?
建站之星展会模板:智能建站与自助搭建高效解决方案
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
零基础网站服务器架设实战:轻量应用与域名解析配置指南
家庭建站与云服务器建站,如何选择更优?
网站制作免费,什么网站能看正片电影?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何在腾讯云免费申请建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。