Перетащите строку в зависимости от содержимого строки после нее - PullRequest
0 голосов
/ 11 июня 2018

У меня есть такой фрейм данных:

   A B C
0  1 0 0
1  1 1 1
2  1 0 0
3  1 0 0
4  1 1 1
5  1 0 0

Как удалить строку на основе содержимого строки после нее?Я только хочу сохранить строки, где строка ниже 1 1 1 и удалить все, где это 1 0 0 или не существует.Так что в этом случае строки 2 и 5 будут отброшены.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Чтобы получить строки, которые соответствуют вашим требованиям, вы можете использовать:

df[df.shift(-1).apply(tuple, axis=1)==(1,1,1)]
#   A  B  C
#0  1  0  0
#3  1  0  0

Или этот, чтобы получить строки 2 и 5:

df[df.shift(1).apply(tuple, axis=1)==(1,1,1)]
#   A  B  C
#2  1  0  0
#5  1  0  0

Или, если 2 и 5 отброшены, этосделает это:

df[(df.shift(-1).apply(tuple, axis=1)==(1,1,1))|(df.apply(tuple, axis=1)==(1,1,1))]
#   A  B  C
#0  1  0  0
#1  1  1  1
#3  1  0  0
#4  1  1  1
0 голосов
/ 11 июня 2018

Вы можете использовать shift с eq и all

df[(df.eq(1).all(1))|(df.eq(1).all(1).shift(-1))]
Out[228]: 
   A  B  C
0  1  0  0
1  1  1  1
3  1  0  0
4  1  1  1

Обновление

s=df.astype(str).apply(','.join,1)
df[(s=='1,1,1')|((s=='1,1,1').shift(-1))|(s!='1,0,0')]
Out[237]: 
   A  B  C
0  1  0  0
1  1  1  1
3  1  0  0
4  1  1  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...