【发布时间】:2017-06-19 17:28:30
【问题描述】:
Data flag
2017-01-01 17.2 False
2017-01-02 17.0 False
2017-01-03 16.8 False
2017-01-04 18.3 False
2017-01-05 19.1 True
...
2017-12-28 20.1 False
2017-12-29 19.8 False
2017-12-30 18.9 False
2017-12-31 19.5 False
有一个带有值和标志的 pandas 数据框。 如果标志为“NOT TRUE”,我想通过滚动(window=30)计算平均值。
【问题讨论】:
-
假设您有一个长度为 30 的窗口,您是否要计算该长度为 30 的窗口内非真值的平均值。意味着窗口将是小于 30 的子集?或者你想收集 30 个句点,跳过
Trues? -
后一种。我想收集 30 个 False 句点,跳过 Trues。
-
那么@ASGM 有你的答案。
-
@piRSquared 关于非真值如何处理第一个均值。
-
@Anflores
df.Data.mask(df.flag).rolling(30, min_periods=1).mean()做到了。但是,1的最小周期意味着它将取前 29 个截断滚动观测值的平均值。你可能想df.Data.mask(df.flag).rolling(30, min_periods=1).mean().iloc[29:].reindex(df.index)
标签: python pandas conditional sliding