我有一个只带有0
、1
和np.nan
值的熊猫系列:
pd.Series([0, np.nan, np.nan, 0, np.nan, np.nan, np.nan, 1, np.nan, 1, np.nan,
np.nan, np.nan, 1, np.nan, 0, np.nan, np.nan, 1, np.nan, np.nan, np.nan, 1])
我想填充缺少的值,但我的逻辑是用1替换np.nan
值,当且仅当上一个和下一个非缺少的值也为1,否则为0。因此,预期产出为:
pd.Series([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1])
我该怎么做
根据您的插补处方,如果需要插补,第一个和最后一个元素始终为
0
。您可以通过vals[i-1]*vals[i+1] == 1
上的所有索引for i in range(1, len(vals)-1)
对vals = ds.values
运行检查,否则设置vals[i]=1
和0
。完成后,重新分配到序列并为第一个和最后一个值输入ds.fillna(0)
没有内置的方法可以做到这一点,您必须为此编写自己的代码
用
fillna
向前填充值相关问题 更多 >
编程相关推荐