假设我们有一个具有以下值的熊猫系列
[np.nan, np.nan, 1, np.nan, 2, np.nan]
什么是最有效的方法是在中间用 0 填充 nan 值。所以我们有
[np.nan, np.nan, 1, 0, 2, np.nan]
换句话说,我们如何使用固定值进行插值,或者进行.fillna操作但忽略nan数组的开头和结尾。
假设我们有一个具有以下值的熊猫系列
[np.nan, np.nan, 1, np.nan, 2, np.nan]
什么是最有效的方法是在中间用 0 填充 nan 值。所以我们有
[np.nan, np.nan, 1, 0, 2, np.nan]
换句话说,我们如何使用固定值进行插值,或者进行.fillna操作但忽略nan数组的开头和结尾。
当前的解决方案,我正在使用
def interpolate_with_fixed(s, value=0):
i = s.first_valid_index()
j = s.last_valid_index()
s.loc[i:j].fillna(value, inplace=True)
return s
我认为您的解决方案非常地道。这是一个替代解决方案:
In [355]: s.loc[s.notnull().idxmax() : s[::-1].notnull().idxmax()].fillna(0, inplace=True)
In [356]: s
Out[356]:
0 NaN
1 NaN
2 1.0
3 0.0
4 2.0
5 NaN
dtype: float64