Назад к вопросам
Junior
13
Как сделать протяжку вверх (заполнить NULL предыдущим ненулевым значением в обратном направлении)?
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
Чтобы сделать протяжку вверх (заполнить NULL предыдущим ненулевым значением в обратном направлении), можно использовать функции заполнения в pandas:
import pandas as pd
df = pd.DataFrame({'value': [None, None, 3, None, 5, None, None]})
# Заполнение NULL значением, идущим сверху вниз (forward fill)
df['filled_down'] = df['value'].ffill()
# Заполнение NULL значением, идущим снизу вверх (backward fill)
df['filled_up'] = df['value'].bfill()
print(df)
В SQL для этого часто используют оконные функции с LAST_VALUE или IGNORE NULLS, но поддержка зависит от СУБД. В PostgreSQL можно сделать так:
SELECT
value,
LAST_VALUE(value) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS filled_down,
FIRST_VALUE(value) OVER (ORDER BY id ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS filled_up
FROM table
Где filled_up — это протяжка вверх (заполнение NULL предыдущим ненулевым значением в обратном направлении).