用n-1替换缺失值 [英] replace missing value with n-1

查看:73
本文介绍了用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 :

df [0] = 420、419、455; 454,453,452

df[0]= 420, 419, 455; 454,453, 452

推荐答案

groupbycumcount

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 groups

df[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替换缺失值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆