I have the following table of boolean values:
pd.DataFrame(data={'val1': [True, False, False, True],
'val2': [False, True, False, True],
'val3': [True, True, False, True],
'val4': [True, False, True, False],
'val5': [True, True, False, False],
'val6': [False, False, True, True]},
index=pd.Series([1, 2, 3, 4], name='index'))
| index | val1 | val2 | val3 | val4 | val5 | val6 |
|---|---|---|---|---|---|---|
| 1 | True | False | True | True | True | False |
| 2 | False | True | True | False | True | False |
| 3 | False | False | False | True | False | True |
| 4 | True | True | True | False | False | True |
I want to create a new dataframe with the same indices, but each row has the first three True column names from the previous column.
| index | TrueVal1 | TrueVal2 | TrueVal3 |
|---|---|---|---|
| 1 | val1 | val3 | val4 |
| 2 | val2 | val3 | val5 |
| 3 | val4 | val6 | NaN |
| 4 | val1 | val2 | val3 |
If a row has fewer than three True values, the new dataframe will have Null values.