Pandas 确定pd系列中的连续真值
我有一个布尔pd序列Pandas 确定pd系列中的连续真值,pandas,boolean,Pandas,Boolean,我有一个布尔pd序列 S=pd.Series([True,False,True,True,False]) 我需要识别S中的块,它们至少是2个连续的真元素。 如果我这样做 然后我得到了正确的元素,但每个块都缺少一个元素。 相反,我想得到以下信息 pd.Series([False,False,True,True,False]) 因此,序列与原始序列大小相同,单个真替换为假首先通过与比较创建唯一的连续组,然后通过与或计数值: 或: 我已经接受了你的答案。但是我仍然有一个问题:当连续出现两个以上的
S=pd.Series([True,False,True,True,False])
我需要识别S中的块,它们至少是2个连续的真元素。
如果我这样做
然后我得到了正确的元素,但每个块都缺少一个元素。
相反,我想得到以下信息
pd.Series([False,False,True,True,False])
因此,
序列
与原始序列大小相同,单个真
替换为假
首先通过与比较创建唯一的连续组,然后通过与或计数值:
或:
我已经接受了你的答案。但是我仍然有一个问题:当连续出现两个以上的错误时,你的解决方案也会返回truevalues@00__00__00-然后将
>1
更改为==2
,我想需要2个或更多,对不起。
pd.Series([False,False,True,True,False])
b = S.ne(S.shift()).cumsum()
c = b.map(b.value_counts()) == 2
c = b.groupby(b).transform('size') == 2
print (c)
0 False
1 False
2 True
3 True
4 False
dtype: bool