
Я ищу быстрый и продуктивный обходной путь для следующей задачи.
Мне нужно создать отдельный столбец для каждого DeviceID
,Столбец должен содержать массив с уникальными SessionStartDate
значениями для каждого DeviceID
.
Например:
- 8846620190473426378 |[2018-08-01, 2018-08-02]
- 381156181455864495 |[2018-08-01]
Хотя пользователь 8846620190473426378
мог иметь 30 сеансов 2018-08-01 и 25 сеансов 2018-08-02, меня интересуют только уникальныедаты, когда произошли эти сеансы.
В настоящее время я использую этот подход:
df_main['active_days'] = [
sorted(
list(
set(
sessions['SessionStartDate'].loc[sessions['DeviceID'] == x['DeviceID']]
)
)
)
for _, x in df_main.iterrows()
]
df_main
вот еще один DataFrame, содержащий агрегированные данные, сгруппированные по DeviceID
Подход, кажется, очень (Wall time: 1h 45min 58s
) медленный, и я считаю, что есть лучшее решение для этой задачи.
Заранее спасибо!