如何对被零值分隔的DataFrame各分段单独计算平均值等操作
实现步骤
核心思路是先给被零值分隔的每个非零分段分配唯一的分组ID,再按分组执行聚合计算,具体代码如下:
- 构造示例数据(可替换为你自己的DataFrame)
import pandas as pd # 示例数据结构和你描述的场景一致 df = pd.DataFrame({ 'value': [0.762, 0.766, 0, 0.66, 1.37, 2.11, 2.29, 0, 1.1, 0.95, 0] })
- 生成分组ID
每遇到一个零值,分组编号自动+1,确保同一个非零分段的所有数据属于同一个分组:
df['group_id'] = df['value'].eq(0).cumsum()
- 按分组计算平均值(或其他操作)
先过滤掉零值行,再按分组ID聚合,需要其他计算时替换mean()为对应的聚合函数即可(如sum()、max()、自定义函数等):
# 得到每个非零分段的平均值结果 seg_mean_result = df[df['value'] != 0].groupby('group_id')['value'].mean()
如果需要把分段平均值回填到原表的对应行,可以用transform方法:
df['seg_mean'] = df[df['value'] != 0].groupby('group_id')['value'].transform('mean')
内容的提问来源于stack exchange,提问作者Gamaal Heikal
相关产品推荐
相关产品推荐

