微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 用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,然后到最后:

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

解决方法:

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

细节

定义组

df[0].notna().cumsum()

0    1
1    1
2    2
3    2
4    2
5    2
Name: 0, dtype: int64

在groupby中使用cumcount

df.groupby(df[0].notna().cumsum()).cumcount()

0    0
1    1
2    0
3    1
4    2
5    3
dtype: int64

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐