Как изменить значения bool в pd.Series, если значение в pandas превышает некоторое значение - PullRequest
1 голос
/ 08 апреля 2019

У меня есть следующая серия bool, я пытаюсь найти count, я должен проверить значения False, если количество значений False в последовательных рядах равно greater than 2, тогда пусть оно будетfalse, но если count is less than equal to 2 then i have to inverse them, из False to True

Ожидаемый результат: Как и в первый раз, False повторяется два раза, что означает, что он изменится на True, но если после значений true мы увидим, 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

Ответы [ 2 ]

4 голосов
/ 08 апреля 2019

Давайте попробуем что-то другое

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
3 голосов
/ 08 апреля 2019

Попробуйте использовать groupby и cumsum для создания уникальных групп False, затем получите count каждой группы, если это число меньше трех, инвертируйте эту группу рядов с помощью ~ и примените обратно к сериям с mask:

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

Выход:

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: 0, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...