Junior
¿Cómo hacer una extensión hacia arriba (rellenar NULL con el valor no nulo anterior en dirección inversa)?
sobes.tech AI
Respuesta de la IA
Чтобы сделать протяжку вверх (заполнить 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 предыдущим ненулевым значением в обратном направлении).