В настоящее время у меня есть набор данных, сгруппированный по часам с помощью переменной «агрегатор». В этих почасовых данных есть пробелы, и в идеале я бы хотел, чтобы они заполнили строки предыдущей строкой, которая сопоставляется с переменной в столбце x.
Я видел несколько решений подобных проблем с использованием PANDAS, но в идеале я хотел бы понять, как лучше всего подойти к этому с UDF для pyspark.
Первоначально я думал о чем-то вроде следующего с PANDAS, но также изо всех сил пытался реализовать это, чтобы просто заполнить игнорируя агрегатор как первый проход:
df = df.set_index(keys=[df.timestamp]).resample('1H', fill_method='ffill')
Но в идеале я бы хотел избежать использования PANDAS.
В приведенном ниже примере у меня есть две пропущенные строки почасовых данных (помечены как MISSING).
| timestamp | aggregator |
|----------------------|------------|
| 2018-12-27T09:00:00Z | A |
| 2018-12-27T10:00:00Z | A |
| MISSING | MISSING |
| 2018-12-27T12:00:00Z | A |
| 2018-12-27T13:00:00Z | A |
| 2018-12-27T09:00:00Z | B |
| 2018-12-27T10:00:00Z | B |
| 2018-12-27T11:00:00Z | B |
| MISSING | MISSING |
| 2018-12-27T13:00:00Z | B |
| 2018-12-27T14:00:00Z | B |
Ожидаемый результат здесь будет следующим:
| timestamp | aggregator |
|----------------------|------------|
| 2018-12-27T09:00:00Z | A |
| 2018-12-27T10:00:00Z | A |
| 2018-12-27T11:00:00Z | A |
| 2018-12-27T12:00:00Z | A |
| 2018-12-27T13:00:00Z | A |
| 2018-12-27T09:00:00Z | B |
| 2018-12-27T10:00:00Z | B |
| 2018-12-27T11:00:00Z | B |
| 2018-12-27T12:00:00Z | B |
| 2018-12-27T13:00:00Z | B |
| 2018-12-27T14:00:00Z | B |
Ценю помощь.
Спасибо.