Search code examples
pythonpandasseries

Pandas Forward Fill NA only between two points and nothing else


I want to use pandas forward fill null values only between two non-null data points and nothing else.

For example I have a column named comments

Comments:
Hello World
NA
Hello World
NA 
Hello World
NA
NA
NA
NA

Output should look like this:

Hello World
Hello World
Hello World
Hello World
Hello World
NA
NA
NA
NA

Solution

  • You can calculate the last valid index and use ffill until this index:

    last = df['Comments'].last_valid_index()
    
    df['Comments'].loc[:last] = df['Comments'].loc[:last].ffill()
    
    print(df)
    
          Comments
    0  Hello World
    1  Hello World
    2  Hello World
    3  Hello World
    4  Hello World
    5          NaN
    6          NaN
    7          NaN
    8          NaN