Условное прямое заполнение между целочисленными значениями - PullRequest
0 голосов
/ 30 мая 2018

У меня есть столбец данных целочисленных значений с пустыми NaN между ними.я хочу переслать заполнение между началом нового целого числа и последним экземпляром этого же целого числа.

0   NaN
1   2.0
2   NaN
3   NaN
4   2.0
5   NaN
6   NaN
7   3.0
8   NaN
9   NaN
10  NaN
11  3.0
12  NaN
13  NaN
14  4.0
15  NaN
16  4.0

Итак, мой результирующий кадр данных будет выглядеть следующим образом.Как бы я это сделал?Моим первым подходом было использование перечислимых и условных операторов с isinstance (x, int).

0   NaN
1   2.0
2   2.0
3   2.0
4   2.0
5   NaN
6   NaN
7   3.0
8   3.0
9   3.0
10  3.0
11  3.0
12  NaN
13  NaN
14  4.0
15  4.0
16  4.0

1 Ответ

0 голосов
/ 30 мая 2018

ffill + bfill с mask

i = s.ffill()
i.mask(i != s.bfill())

0     NaN
1     2.0
2     2.0
3     2.0
4     2.0
5     NaN
6     NaN
7     3.0
8     3.0
9     3.0
10    3.0
11    3.0
12    NaN
13    NaN
14    4.0
15    4.0
16    4.0
Name: 1, dtype: float64

s - это ваша колонка.
Мне очень нравится краткость этого.

...