Я работаю с фреймом данных, в котором есть столбец с несколькими NaN, который я хочу заполнить в соответствии со следующим условием: если идти вперед и назад до 3 строк, есть 2 равных значения, затем заполните NaN этим значением.
Поскольку это может быть непонятно, приведу пару примеров:
col1
0 10
1 10
2 NaN
3 NaN
4 NaN
5 10
6 5
7 NaN
8 5
9 NaN
10 NaN
11 NaN
12 NaN
- Значение в строке 2 имеет 10 в 1 строке, идущей назад, и 10 в 3 строках, идущей вперед. -> Заполнить 10
- Значение в строке 3 имеет 10 в 2 строках назад и 10 в 2 строках вперед. -> Заполнить 10
- Значение в строке 4 имеет 10 в 3-х строках назад и 10 в 1-й строке вперед. -> Заполнить 10
- Значение в строке 7 включает 5 в 1 строке в обратном направлении и 5 в 1 строке при движении вперед. -> Заполнить 5
- Значение в строке 9 имеет 5 в 1 строке, идущей назад, но не 5 в 3 строках, идущих вперед. -> Тогда не заполняйте
Тогда результат будет таким:
col1
0 10
1 10
2 10
3 10
4 10
5 10
6 5
7 5
8 5
9 NaN
10 NaN
11 NaN
12 NaN
Могу ли я использовать какие-либо функции, чтобы передать эту логику fillna
?
Спасибо!!
fillna()
говорится, что метод поддерживает толькоffill
илиbackfill
(также называемыеpad
иbfill
соответственно). Вам придется реализовать функцию, чтобы решить проблему самостоятельно. - person Erik André   schedule 18.04.2020