Python 如果计数大于某些值,如何更改pd.系列中的布尔值

Python 如果计数大于某些值,如何更改pd.系列中的布尔值,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有以下布尔数列,我试图找到计数,我必须检查假值,如果连续数列中假值的计数大于2,则让它为假,但如果计数小于等于2,则我必须将其反转,从False到True 预期输出:与wise first time一样,False重复两次,这意味着它将变为True,但如果我们看到True值之后False再次重复两次以上,因此这些值将保持为False 如何使用Pandas函数执行此操作 True True True True True False False True True True True True T

我有以下布尔数列,我试图找到
计数
,我必须检查
值,如果连续数列中
值的计数大于2,则让它为假,但如果
计数小于等于2,则我必须将其反转
,从
False到True

预期输出:与wise first time一样,False重复两次,这意味着它将变为True,但如果我们看到True值之后False再次重复两次以上,因此这些值将保持为False

如何使用Pandas函数执行此操作

True
True
True
True
True
False
False
True
True
True
True
True
True
True
False
False
False
False
False
False
True
True
True
True

尝试使用
groupby
cumsum
生成唯一的False组,然后获取每组的
计数
,如果该计数小于三,则使用
~
反转该系列组,并使用
掩码应用回序列:

s.mask(s.groupby((s).cumsum().where(~s)).transform('count') < 3, ~s)

尝试使用
groupby
cumsum
生成唯一的False组,然后获取每组的
计数
,如果该计数小于三,则使用
~
反转该系列组,并使用
掩码应用回序列:

s.mask(s.groupby((s).cumsum().where(~s)).transform('count') < 3, ~s)

让我们试试别的

s=df.cumsum().mask(df)
df=df.mask(s.isin(s.value_counts()[s.value_counts()<=2].index),True)
df
0      True
1      True
2      True
3      True
4      True
5      True
6      True
7      True
8      True
9      True
10     True
11     True
12     True
13     True
14    False
15    False
16    False
17    False
18    False
19    False
20     True
21     True
22     True
23     True
Name: a, dtype: bool
s=df.cumsum().mask(df)

df=df.mask(s.isin)(s.value_counts()[s.value_counts()让我们尝试不同的方法

s=df.cumsum().mask(df)
df=df.mask(s.isin(s.value_counts()[s.value_counts()<=2].index),True)
df
0      True
1      True
2      True
3      True
4      True
5      True
6      True
7      True
8      True
9      True
10     True
11     True
12     True
13     True
14    False
15    False
16    False
17    False
18    False
19    False
20     True
21     True
22     True
23     True
Name: a, dtype: bool
s=df.cumsum().mask(df)

df=df.mask(s.isin(s.value_counts()[s.value_counts())您能否缩短示例(~10行将是完美的)并提供预期的输出?请@coldspeed正确解释输出请阅读信息您能否缩短示例(~10行将是完美的)并提供预期输出,请?@coldspeed正确解释输出,请阅读信息