Эффективный отсортированный diff в dask

Как я могу сделать следующее в Dask "эффективным" способом:

В моем кадре данных dask есть столбцы «Дата» (datetime), «MAC» (категория) и «ID» (int), которые уже отсортированы по дате, и я хочу получить новый столбец с timedeltas для поступления http-запросов для заданного mac-адреса.

В пандах я бы сделал следующее: настроил мультииндекс ['ID', 'MAC'], а затем создал новый столбец «Timedelta» с df['Date'].diff(1). Похоже, что мультииндекс не поддерживается, поэтому одно и то же решение не может быть воспроизведено. Важная часть заключается в том, что различия должны выполняться для одного и того же MAC-адреса, между данным запросом и последующим, который был записан (таким образом, отсортированы по дате).


person JuanPabloMF    schedule 27.02.2017    source источник


Ответы (1)


Возможно, вы сможете сделать это с помощью groupby-apply? Это вызовет перетасовку (которая несколько медленная), но должна выполнить свою работу.

df.groupby('MAC').apply(lambda df: df.assign(diff=df.Date.diff(1))

На самом деле я этого не делал, поэтому я ожидаю, что это потребует настройки.

person MRocklin    schedule 02.03.2017
comment
Этот ответ работает, но мне трудно понять, как определить метаданные для этого решения. Есть ли у вас какие-либо предложения? - person Korean_Of_the_Mountain; 06.02.2019