如何计算DataFrame中各非固定长度stroke段的penetration平均值
Pandas 分段计算stroke有效penetration平均值方案
核心逻辑
- 连续非0的penetration值为同一stroke的有效数据,每段有效数据后跟随的0值不需要纳入平均值计算
- 通过给每段连续非0值打上唯一的分组标签,即可批量完成所有分段的平均值计算,全程用向量化运算效率远高于逐行遍历
实现代码
import pandas as pd # 此处替换为你自己的DataFrame,默认penetration值存储在`penetration`列 df = pd.read_csv("你的数据文件路径.csv") # 生成stroke分组ID:遇到新的非0段起始位置时,分组ID累加1 df['stroke_group'] = (df['penetration'].ne(0) & df['penetration'].shift(fill_value=0).eq(0)).cumsum() # 过滤所有0值后,按分组计算平均值 stroke_penetration_avg = df[df['penetration'] > 0].groupby('stroke_group')['penetration'].mean().reset_index()
输出说明
最终得到的stroke_penetration_avg包含两列:
stroke_group:stroke的顺序编号,从1开始递增penetration:对应stroke段的有效penetration平均值
内容的提问来源于stack exchange,提问作者Gamaal Heikal
相关产品推荐
相关产品推荐

