Forward Fill All Except Last Value In Python Pandas Dataframe
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 columns: df[column].fi
Solution 1:
You can use last_valid_index
in a lambda function to just ffill up to that point.
df = pd.DataFrame({
'A': [1, None, None, None],
'B': [1, 2, None, None],
'C': [1, None, 3, None],
'D': [1, None, None, 4]})
>>> df
A B C D
011111 NaN 2 NaN NaN
2 NaN NaN 3 NaN
3 NaN NaN NaN 4>>> df.apply(lambda series: series.loc[:series.last_valid_index()].ffill())
A B C D
011111 NaN 2112 NaN NaN 313 NaN NaN NaN 4
Solution 2:
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
011111 NaN 2 NaN NaN
2 NaN NaN 3 NaN
3 NaN NaN NaN 44 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
01.01.01.01.01 NaN 2.01.01.02 NaN NaN 3.01.03 NaN NaN NaN 4.04 NaN NaN NaN NaN
Post a Comment for "Forward Fill All Except Last Value In Python Pandas Dataframe"