如何使用Pandas计算带额外判断条件的滚动均值?
Pandas 滚动均值条件赋值实现方法
首先需要先对原始3-day-min列做预处理,将占位符-转换为数值类型可识别的缺失值,避免后续计算报错:
import pandas as pd import numpy as np # 转换3-day-min列为数值类型,非数值的'-'会自动转为NaN df['3-day-min'] = pd.to_numeric(df['3-day-min'], errors='coerce')
运行你原有的滚动均值计算代码:
df['rolling_mean'] = df['3-day-min'].rolling(3).mean()
接下来实现你的判断逻辑,有两种常用实现方式:
方法1:np.where 逻辑直观写法
完全匹配你描述的判断规则,可读性高:
# 规则:滚动均值>Total时取Total,否则取滚动均值 df['rolling_mean'] = np.where( df['rolling_mean'] > df['Total'], df['Total'], df['rolling_mean'] )
方法2:取最小值简化写法
你的需求本质是取「计算得到的滚动均值」和「当前行Total值」的较小值,可以直接用np.minimum简化代码:
df['rolling_mean'] = np.minimum(df['rolling_mean'], df['Total'])
两种方法得到的结果完全一致,你可以根据自己的习惯选择。
内容的提问来源于stack exchange,提问作者dinn_
相关产品推荐
相关产品推荐

