Pandas - Extract rows until a condition

Viewed 368

I have the below dataframe.

    value TRUE/FALSE
0       1          T
1       2          T
2       3          T
3       4          T
4       4          T
5       4          T
6       4          T
7       4          F
8       4          F
9       4          F
10      4          F
11      4          F
12      4          F
13      4          F
14      4          T
15      4          T
16      4          T
17      4          T
18      4          F
19      4          T
20      4          F

I would like to extract all rows with 'T' label until first 'F' label occurs.

Expected output:

   value TRUE/FALSE
0      1          T
1      2          T
2      3          T
3      4          T
4      4          T
5      4          T
6      4          T

Thanks in advance.

1 Answers

You can use cummin on the boolean Series df['TRUE/FALSE'].eq('T'), this will yield True until the first F/False is found:

df[df['TRUE/FALSE'].eq('T').cummin()]

Alternative with cumprod:

df[df['TRUE/FALSE'].eq('T').cumprod().eq(1)]

output:

   value TRUE/FALSE
0      1          T
1      2          T
2      3          T
3      4          T
4      4          T
5      4          T
6      4          T

Used input:

df = pd.DataFrame({'value': [1,2,3]+[4]*18,
                   'TRUE/FALSE': list('TTTTTTTFFFFFFFTTTTFTF')})
Related