前向填充仅特定值

问题描述

我有一个表示对象状态的数组,其中 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 (将#修改为@)