Pandy - Wypełnij nans aż do pierwszej wartości innej niż NULL

9

Mam ramkę danych jak

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

Jak wypełnić tylko NULL (z 0) dla każdej serii aż do pierwszej wartości innej niż NULL, co prowadzi do

A    B    C
1    0    0
2    0    5
3    3    nan
4    nan  nan
Jan
źródło

Odpowiedzi:

6

Trochę trick z użyciem pandas.DataFrame.ffillz notnai where:

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

Lub używając pandas.DataFrame.interpolate:

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

Wynik:

   A    B    C
0  1  0.0  0.0
1  2  0.0  5.0
2  3  3.0  NaN
3  4  NaN  NaN
Chris
źródło
6

Można to zrobić za pomocą wherelub 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

Wiele sposobów na skórowanie kota tutaj :-)

cs95
źródło
0

Ponieważ 0 + nan jest nan, działa to:

xf = df.fillna(0) + df.bfill()*0
Hunaphu
źródło