Python 熊猫:检查柱中的不连续性

Python 熊猫:检查柱中的不连续性,python,pandas,Python,Pandas,我有以下数据 index date hour value 0 2020-01-01 0 0 1 2020-01-01 1 0 2 2020-01-01 2 0 3 2020-01-01 3 1 4 2020-01-01 4 0 5 2020-01-01 5 0 6

我有以下数据

index      date        hour   value
  0      2020-01-01     0       0
  1      2020-01-01     1       0
  2      2020-01-01     2       0
  3      2020-01-01     3       1
  4      2020-01-01     4       0
  5      2020-01-01     5       0
  6      2020-01-01     6       0
  7      2020-01-01     7       1
 ..          ...        ..     ..
 742     2020-01-31    21       1
 743     2020-01-31    22       1
 744     2020-01-31    23       1
在上面的数据中,我想看看对于给定的24小时窗口,如果
为1,并且前3小时和后3小时不是1,则将其替换为0。例如,在上面的
索引中,
3的值将替换为0,因为前3个值和后3个值都是0。
我可以使用
np.where
,但不确定如何检查前3行和后3行的值。

不使用
。apply()
这很慢。可以使用
.sum()
并与中心进行比较

before = after = 3
mask = df["value"].rolling(window=(before+after) + 1, center=True).sum()==df["value"]

df.loc[mask, "value"] = 0
没有
。apply()
,速度很慢。可以使用
.sum()
并与中心进行比较

before = after = 3
mask = df["value"].rolling(window=(before+after) + 1, center=True).sum()==df["value"]

df.loc[mask, "value"] = 0

1.请始终以可复制粘贴代码的形式发布数据或数据帧。2.请提供最少的输入和所需的相应输出。3.你考虑了吗?谢谢Gulzar,我会记住这一点的。1。请始终以可复制粘贴代码的形式发布数据或数据帧。2.请提供最少的输入和所需的相应输出。3.你考虑了吗?谢谢Gulzar,我会记住的。好!我熟悉
滚动
,但不知道它也可以用于接下来的n行。如果我没有错的话,
center=True
这是可能的,对吗?没错:)很好!我熟悉
滚动
,但不知道它也可以用于接下来的n行。如果我没有错的话,
center=True
这是可能的,对吗?没错:)