В Пандах, как я могу уменьшить строки, чтобы принимать только строки с первым истинным значением в каждой подгруппе истин? - PullRequest
0 голосов
/ 15 ноября 2018

В качестве примера рассмотрим следующее:

Введите

a b   c  bool
1 243 0  true
1 253 1  false
1 267 0  true
1 245 0  true
1 234 0  false
1 255 0  true
1 275 0  true
1 295 0  true

Я хочу, чтобы вывод был следующим:

a b   c  bool
1 243 0  true
1 253 1  false
1 267 0  true
1 234 0  false
1 255 0  true

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

IIUC

df.groupby(df['bool'].ne(True).cumsum()).head(2)
Out[201]: 
   a    b  c   bool
0  1  243  0   True
1  1  253  1  False
2  1  267  0   True
4  1  234  0  False
5  1  255  0   True
0 голосов
/ 15 ноября 2018

Используйте для этого некоторую логическую маскировку и сделайте это в одной строке:

df.loc[(df['bool'] != df['bool'].shift(1))]

из:

>>> df.loc[(df['bool'] != df['bool'].shift(1))]
   a    b  c   bool
0  1  243  0   True
1  1  253  1  False
2  1  267  0   True
4  1  234  0  False
5  1  255  0   True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...