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] 列中的值.如果平均值较高,则应检查 [总计] 列中的值。
希望这是有道理的。任何帮助将不胜感激。
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'])
我有一个 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] 列中的值.如果平均值较高,则应检查 [总计] 列中的值。
希望这是有道理的。任何帮助将不胜感激。
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'])