0

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

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   

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

我正在尝试创建一个新列,它是 [3-day min] 列的滚动 3 天平均值/平均值,我使用此行完成了该操作:

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

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

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

4

1 回答 1

2

利用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'])
于 2021-09-15T23:58:50.210 回答