首页 > 解决方案 > Fillna 在除最后一行之外的所有行上

问题描述

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

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 (填充)。这是预期的输出:

     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)

有任何想法吗?谢谢

标签: pythonpython-3.xpandasfillna

解决方案


尝试使用,进行iloc分配以获取最后一行之前的所有行并将其分配给 ffill :ffillilocdf

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

推荐阅读