如何解决前向填充仅特定值
我有一个表示对象状态的数组,其中 0 - 对象关闭,1 - 对象打开。
import pandas as pd
import numpy as np
s = [np.nan,np.nan,1,np.nan]
df = pd.DataFrame(s,columns=["s"])
df
s
0 NaN
1 0.0
2 NaN
3 NaN
4 1.0
5 NaN
6 NaN
7 0.0
8 NaN
9 1.0
10 NaN
我只需要转发其中的 0 值,如下所示。
>>> df_wanted
s
0 NaN
1 0.0
2 0.0
3 0.0
4 1.0
5 NaN
6 NaN
7 0.0
8 0.0
9 1.0
10 NaN
在这里浏览类似的问题后,我只是比较 ffill
-ed 和 bfill
-ed 值并用掩码分配回来:
mask = (df.ffill() == 0) & (df.bfill() == 1)
df[mask] = 0
df
s
0 NaN
1 0.0
2 0.0
3 0.0
4 1.0
5 NaN
6 NaN
7 0.0
8 0.0
9 1.0
10 NaN
但是,如果任何 0 值后面没有 1,那也无济于事。考虑到这种情况,还有什么更优雅的解决方案?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。