Python按stage列条件分段计算对应行Vout平均值的实现方法
分块计算Stage=2对应Vout平均值的解决方法
核心思路是先给每个独立数据块打上唯一标识,再按块分组计算符合条件的平均值:
- 第一步:生成块ID列
假设你的数据块按Stage递增序列排列,每个新块会从低Stage值重新开始,用如下代码给每个块分配唯一ID:
如果你数据块的划分逻辑不是Stage跳变(比如按时间间隔、其他特定列标识划分),只需调整# 每次Stage小于上一行的Stage时判定为新块开始,累加生成块ID df['block_id'] = (df['Stage'] < df['Stage'].shift(1).fillna(0)).cumsum()block_id的生成规则即可。 - 第二步:分块计算Stage=2的Vout平均值
直接输出每个块对应平均值的代码:
如果需要把平均值回填到原数据集的对应行,可以用block_avg = df[df['Stage'] == 2].groupby('block_id')['Vout'].mean().reset_index(name='stage2_vout_avg')transform方法:df.loc[df['Stage'] == 2, 'block_stage2_avg'] = df[df['Stage'] == 2].groupby('block_id')['Vout'].transform('mean')
内容的提问来源于stack exchange,提问作者fudgey
相关产品推荐
相关产品推荐

