[英]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.ffill
和where
的 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
這將使用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 + 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.