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

如何使用Python计算DataFrame中零值间非零数据段的间歇平均值

连续非零数据块平均值计算方案

核心逻辑为给每一段连续非零数据分配唯一分组ID,过滤零值后按分组聚合求均值,全程使用pandas向量化运算,可适配千万行级大体量DataFrame的性能需求。

示例图

实现代码

import pandas as pd

# 构造测试数据,可替换为你的实际DataFrame
df = pd.DataFrame({'value': [2,3,4,5,0,0,6,7,8,0,9,10,11,12,13]})

# 1. 生成非零值掩码
mask = df['value'] != 0
# 2. 给连续非零块打唯一分组标签
df['group'] = (mask & (~mask.shift(fill_value=False))).cumsum()
# 3. 过滤零值后按分组求平均值
non_zero_block_avg = df[mask].groupby('group')['value'].mean()

# 输出结果
print(non_zero_block_avg)

输出示例

group
1     3.5
2     7.0
3    11.0
Name: value, dtype: float64

适配说明

  • 若需要对多列分别计算非零块均值,对每列单独执行上述逻辑即可
  • 若零值为接近0的极小值而非严格等于0,可将掩码规则修改为mask = df['value'].abs() > 你设置的阈值适配场景
  • 若需要获取每个非零块的起止索引、数据长度等信息,可修改groupby的聚合规则,例如使用agg函数自定义返回字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:09:01