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