簡體   English   中英

Pandas- 填充 nans 直到第一個非 NULL 值

[英]Pandas- Fill nans up until first non NULL value

我有一個 dataframe 之類的

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

使用帶有pandas.DataFrame.ffillwhere的 pandas.DataFrame.ffill notna技巧:

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

或使用pandas.DataFrame.interpolate

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

Output:

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

這將使用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

這里有很多剝貓皮的方法:-)

由於 0 + nan 是 nan 這有效:

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM