Эй, у меня есть набор данных порядка временных рядов в пандах с пропущенными значениями для некоторых дат, чтобы исправить его. Я пытаюсь подобрать значение из предыдущих доступных дат.
for date in dates_missing:
df_temp = df[df.order_date<date].sort_values(['order_date'],ascending=False)
supplier_map = df_temp.groupby('supplier_id')['value'].first()
for supplier_id in supplier_map.index.values:
df[(df.order_datetime==date)&(df.su_id == supp)]['value'] = supplier_map.get(supplier_id)
Чтобы объяснить код, который яя зацикливаюсь на пропущенных датах, затем выбираю список значений, предшествующих пропущенной дате.Затем получение идентификатора поставщика для отображения карты с использованием панд сначала ()
СЕЙЧАС самая медленная часть обновляет исходный фрейм данных
IЯ зацикливаюсь на каждом поставщике и обновляю значения в исходном фрейме данных.
Нужно предложение ускорить этот внутренний цикл
Пример:
|order_date|supplier_id |value |sku_id|
|2017-12-01| 10 | 1.0 | 1 |
|2017-12-01| 9 | 1.3 | 7 |
|2017-12-01| 3 | 1.4 | 2 |
|2017-12-02| 3 | 0 | 2 |
|2017-12-02| 9 | 0 | 7 |
|2017-12-03| 3 | 1.0 | 2 |
|2017-12-03| 10 | 1.0 | 1 |
|2017-12-03| 9 | 1.3 | 7 |
дата исправления 2017-12-02
|2017-12-02| 3 | 0 | 2 |
|2017-12-02| 9 | 0 | 7 |
исправленный фрейм данных
|order_date|supplier_id |value |sku_id|
|2017-12-01| 10 | 1.0 | 1 |
|2017-12-01| 9 | 1.3 | 7 |
|2017-12-01| 3 | 1.4 | 2 |
|2017-12-02| 3 | 1.4 | 2 |
|2017-12-02| 9 | 1.3 | 7 |
|2017-12-03| 3 | 1.0 | 2 |
|2017-12-03| 10 | 1.0 | 1 |
|2017-12-03| 9 | 1.3 | 7 |
PS: Я, возможно, не совсем ясно с вопросом, поэтому был бы рад ответить на сомнения и отредактировать сообщение дальше.