Sobes.tech
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 предыдущим ненулевым значением в обратном направлении).