本文介绍了用n-1替换缺失值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如:我有
df = pd.DataFrame({0: [420, np.nan, 455, np.nan, np.nan, np.nan]})
df
0
0 420.0
1 NaN
2 455.0
3 NaN
4 NaN
5 NaN
然后使用:
df[0].isnull().astype(int)
0 0
1 1
2 0
3 1
4 1
5 1
Name: 0, dtype: int64
我知道
df[0].fillna(method='ffill') - df[0].isnull().astype(int)
0 420.0
1 419.0
2 455.0
3 454.0
4 454.0
5 454.0
Name: 0, dtype: float64
我想要得到0,1,0,1,2,3,然后最后:
I am looking for to get 0,1,0,1,2,3, then in the end :
推荐答案
groupby
,cumcount
df[0].ffill() - df.groupby(df[0].notna().cumsum()).cumcount()
0 420.0
1 419.0
2 455.0
3 454.0
4 453.0
5 452.0
dtype: float64
详细信息
定义组Details
Define groupsdf[0].notna().cumsum()
0 1
1 1
2 2
3 2
4 2
5 2
Name: 0, dtype: int64
与cumcount
一起在groupby
中使用
Use in groupby
with cumcount
df.groupby(df[0].notna().cumsum()).cumcount()
0 0
1 1
2 0
3 1
4 2
5 3
dtype: int64
这篇关于用n-1替换缺失值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!