Как параллельно обрабатывать pandas Dataframe для каждого уникального значения в столбце? - PullRequest
0 голосов
/ 29 октября 2019

Я ищу идеи для оптимизации моей функции. У меня ограниченные знания по многопроцессорности, поэтому я просто ищу кого-то, кто бы указал мне правильное направление!

Итак, у меня есть пандас DataFrame со следующим форматом

---------------------------------------------------
|Date         | Portfolio | Classification | P&L  |
--------------------------------------------------
| 2016-01-01  | A         | Class_1        | 100  |
--------------------------------------------------
|2016-01-02   | A         | Class_2        | 200  |
.                                                 .
.                                                 .  
.                                                 .
--------------------------------------------------
|2019-10-31   | A         | Class_700      | -200 |
--------------------------------------------------

Все, что мне нужно, чтобы получитьотсюда и атрибуция P & L, которая в основном объясняет, как каждый уникальный класс генерировал p & l с момента его создания, и у меня есть еще одна функция для этого ...

В настоящее время моя логика:

for unique_class in df['Classification'].unique():
    class_df = df[df['Classification'] == unique_class].copy()
    result1, result2 = call_attribution_function(class_df)
    overall_results1.append(result1)
    overall_results2.append(results2)

Эторабота сделана, но, очевидно, очень медленно. В реальном сценарии у меня более 700 уникальных классификаций. Однако ни одна из классификаций не зависит друг от друга. В основном все 700 могут обрабатываться параллельно, и это значительно улучшит производительность.

Есть идеи, как этого достичь? Я видел несколько примеров с joblib , но у меня не было большого направления для нарезки фреймов данных и распараллеливания функций с несколькими возвращаемыми переменными.

Любые указатели высоко ценятся! Заранее спасибо!

...