Fillna 在除最后一行之外的所有行上

Fillna on all rows excluding last

假设我有一个这样的 pandas 数据框:

df = pd.DataFrame({'A': [np.nan, 5, 2, np.nan, 3], 'B': [np.nan, 4, np.nan, 5, np.nan], 'C': [np.nan, 4, 3, 2, 1]})

     A    B    C
0  NaN  NaN  NaN
1  5.0  4.0  4.0
2  2.0  NaN  3.0
3  NaN  5.0  2.0
4  3.0  NaN  1.0

我想在除最后一行之外的所有行上应用 fillna (ffill)。 这是预期的输出:

     A    B    C
0  NaN  NaN  NaN
1  5.0  4.0  4.0
2  2.0  4.0  3.0
3  2.0  5.0  2.0
4  3.0  NaN  1.0

以下代码无效:

df.drop(df.tail(1).index).fillna(method="ffill",inplace=True)

有什么想法吗?谢谢

尝试 iloc 赋值 ffilliloc 获取最后一行之前的所有行并将其分配给 df:

的 ffill
df.iloc[:-1] = df.iloc[:-1].ffill()

df

     A    B    C
0  NaN  NaN  NaN
1  5.0  4.0  4.0
2  2.0  4.0  3.0
3  2.0  5.0  2.0
4  3.0  NaN  1.0