Python 如何创建带有附加条件的滚动平均值

Python how to create a rolling mean with additional conditions

我有一个 pandas 数据框,如下所示:

Date (DMY)     Total     3-day-min
01/03/2013     0.102        -    
02/03/2013     0.122        -    
03/03/2013     0.047       0.047  
04/03/2013     0.050       0.047 
05/03/2013     0.052       0.049  
06/03/2013     0.049       0.048   
07/03/2013     0.048       0.048   
08/03/2013     0.048       0.047   

第一列是日期,第二列是总值,第三列是 [总计] 列中值的三天滚动最小值。

我正在尝试创建一个新专栏,它是 [3 天最少] 专栏的 3 天滚动 mean/average,我使用以下行完成了此操作:

df['rolling_mean'] = df['3-day-min'].rolling(3).mean()

但是,我想做的是引入一个条件,在新的 [rolling_mean] 行中,检查值是否高于 [Total] 列中的值.如果平均值较高,则应检查 [总计] 列中的值。

希望这是有道理的。任何帮助将不胜感激。

使用Series.where

df['rolling_mean'] = df['3-day-min'].rolling(3).mean().where(lambda x: x.le(df['3-day-min']), df['3-day-min'])

或者:

df['rolling_mean'] = df['3-day-min'].rolling(3).mean().mask(lambda x: x.gt(df['3-day-min']), df['3-day-min'])