パンダ-最初の非NULL値までナンを埋める


9

私のようなデータフレームがあります

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

最初の非NULL値までの各系列のNULL(0)のみを埋めるにはどうすればよいですか。

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

回答:


6

and を使っpandas.DataFrame.ffillてちょっとしたトリック:notnawhere

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

ここで猫の皮をむく方法はたくさんあります:-)


0

0 + nanはnanなので、これは機能します。

xf = df.fillna(0) + df.bfill()*0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.