Панды - Заполните nans до первого ненулевого значения

9

У меня есть датафрейм как

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
Джон
источник

Ответы:

6

Бит трюк с использованием pandas.DataFrame.ffillс notnaи where:

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
Крис
источник
6

Это будет сделано с помощью whereили mask.

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

Много способов снять шкуру с кошки здесь :-)

cs95
источник
0

Так как 0 + nan является nan, это работает:

xf = df.fillna(0) + df.bfill()*0
Hunaphu
источник