Forward fill all except last value in python pandas dataframe

前端 未结 2 1681
离开以前
离开以前 2021-02-06 10:28

I have a dataframe in pandas with several columns I want to forward fill the values for. At the moment I\'m doing:

columns = [\'a\', \'b\', \'c\']
for column in          


        
2条回答
  •  深忆病人
    2021-02-06 11:29

    In addition to the answer from Alexander, you can use the following if you want to conserve bottom rows with NaNs:

    df2 = pd.DataFrame({
        'A': [1, None, None, None, None], 
        'B': [1, 2, None, None, None], 
        'C': [1, None, 3, None, None], 
        'D': [1, None, None, 4, None]})
    
    df2
        A   B   C   D
    0   1   1   1   1
    1 NaN   2 NaN NaN
    2 NaN NaN   3 NaN
    3 NaN NaN NaN   4
    4 NaN NaN NaN NaN
    
    pd.concat([df2.apply(lambda series: series.loc[:series.last_valid_index()].ffill()),
               df2.loc[df2.last_valid_index()+1:]])
    
        A   B   C   D
    0   1.0 1.0 1.0 1.0
    1   NaN 2.0 1.0 1.0
    2   NaN NaN 3.0 1.0
    3   NaN NaN NaN 4.0
    4   NaN NaN NaN NaN
    

提交回复
热议问题