仅在两个相同的非NA值之间填写NA



我想用非NA值填充panda系列的NA,但前提是填充NA值的非NA值相同。有什么聪明快捷的解决方案吗?我知道我可以写一个函数,我会在itterrows设置中使用,但我操作的是数百万行,需要一个更快的解决方案。

输入示例:

0    NaN
1    1
2    NaN
3    1
4    NaN
5    2
6    NaN
7    NaN
8    2
9    NaN

输出:

0    NaN
1    1
2    1
3    1
4    NaN
5    2
6    2
7    2
8    2
9    NaN

这可能有点厚颜无耻,但我的第一个想法是检查ffillbfill在哪里填充相同的值。

>>> s
0    NaN
1    1.0
2    NaN
3    1.0
4    NaN
5    2.0
6    NaN
7    NaN
8    2.0
9    NaN
dtype: float64
>>> ffill = s.ffill()
>>> s[ffill.eq(s.bfill())] = ffill
>>> s
0    NaN
1    1.0
2    1.0
3    1.0
4    NaN
5    2.0
6    2.0
7    2.0
8    2.0
9    NaN
dtype: float64

最新更新