Get a boolean dataframe from a dataframe with true if after the first_valid_date and false otherwise

Viewed 35

I have a Dataframe with several NaN like this one :

              A    B    C
2021-08-31  1.0  NaN  NaN
2021-09-01  2.0  NaN  5.0
2021-09-02  4.0  3.0  NaN
2021-09-03  NaN  7.0  NaN
2021-09-06  2.0  5.0  NaN
2021-09-07  9.0  NaN  5.0
2021-09-08  4.0  5.0  NaN

I would like to have a Dataframe that, for each column, is True if the element is the first_valid_date or after and False otherwise :

             A      B      C
2021-08-31  True  False  False   
2021-09-01  True  False  True
2021-09-02  True  True   True
2021-09-03  True  True   True
2021-09-06  True  True   True
2021-09-07  True  True   True
2021-09-08  True  True   True



1 Answers

You can fillna() using ffill to fill all the values row-wise. Then, calling df.notna() will return True on non-missing values and False on missing values:

>>> df.fillna(method='ffill').notna()

               A      B      C
date                          
31/08/2021  True  False  False
01/09/2021  True  False   True
02/09/2021  True   True   True
03/09/2021  True   True   True
06/09/2021  True   True   True
07/09/2021  True   True   True
08/09/2021  True   True   True
Related