Чтобы получить строки, которые соответствуют вашим требованиям, вы можете использовать:
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