我希望能够基于在单独的列中标记为True的值在Data列上执行滚动平均。下面是一个示例数据集。
Data Condition
2020-01-01 0:00 2.0 False
2020-01-01 0:01 2.0 False
2020-01-01 0:02 732.1 True
2020-01-01 0:03 734.2 True
2020-01-01 0:04 733.3 True
2020-01-01 0:05 731.2 True
2020-01-01 0:06 2.0 False
2020-01-01 0:07 2.0 False
...
2020-06-15 23:52 2.0 False
2020-06-15 23:53 732.1 True
2020-06-15 23:54 734.2 True
2020-06-15 23:55 733.3 True
2020-06-15 23:56 731.2 True
2020-06-15 23:57 2.0 False
2020-06-15 23:58 2.0 False
2020-06-15 23:59 2.0 False
对于数据列,我的预期输出为3,窗口大小为:
[2.0,2.0,733.15,733.2,732.9,732.25,2,2,...,2.0,733.15,733.2,732.9,732.25,2.0,2.0,2.0]。
因此,从本质上讲,对于每一行,它将取该行上方和下方的行以及相关行的平均值,但始终将错误的行排除在数字之外。
我找到了一些代码,除了它不是用于当前的熊猫。
pandas.rolling_mean(df[df.Condition], window=30)
我在这里找到它:Conditional mean by rolling
任何帮助或信息,将不胜感激!
答案 0 :(得分:1)
我相信您会过滤数据框以仅获取符合条件的行,然后应用滚动平均值。
df['rolling'] = df.loc[df['Condition'] == True]['Data'].rolling(30).mean().fillna(0)