熊猫-填充nans直到第一个非NULL值

时间:2019-11-01 05:04:58

标签: python pandas dataframe null

我有一个类似的数据框

A    B    C
1    nan  nan
2    nan  5
3    3    nan
4    nan  nan

如何只填充每个系列的NULL(以0表示),直到第一个非NULL值,导致

A    B    C
1    0    0
2    0    5
3    3    nan
4    nan  nan

4 个答案:

答案 0 :(得分:6)

这将使用wheremask完成。

df.mask(df.notna().cumsum().eq(0), 0)
# or,
df.where(df.notna().cumsum().ne(0), 0)

   A    B    C
0  1  0.0  0.0
1  2  0.0  5.0
2  3  3.0  NaN
3  4  NaN  NaN

许多在这里给猫皮的方法:-)

答案 1 :(得分:6)

结合使用pandas.DataFrame.ffillnotnawhere的技巧:

df.where(df.ffill().notna(), 0)

或使用pandas.DataFrame.interpolate

df.interpolate('zero', fill_value=0, limit_direction='backward')

输出:

   A    B    C
0  1  0.0  0.0
1  2  0.0  5.0
2  3  3.0  NaN
3  4  NaN  NaN

答案 2 :(得分:0)

由于0 + nan是nan,因此可以正常工作

xf = df.fillna(0) + df.bfill()*0

答案 3 :(得分:0)

上面的好答案。或者,如果您想对特定的列执行此操作:

df[columnName][:df[columnName].first_valid_index()].fillna(0, inplace=True)