Есть ли способ объединить заказы в течение определенного промежутка времени в Python? - PullRequest
2 голосов
/ 08 апреля 2019

Я довольно новичок в работе с Python.Есть таблица заказов с определенным временным флагом.Однако «правильный» заказ был разбит на множество строк, поскольку заказы могут обрабатываться в разное время и, следовательно, имеют разные идентификаторы заказов.

Конечная цель состоит в том, чтобы идентифицировать или агрегировать данные на уровне заказа в соответствии с конкретным временным интервалом, а именно: пока следующие order_ids от одного пользователя находятся в пределах одного часа от первого заказа этого пользователя, данныедолжен быть идентифицирован как истинно «один порядок».

До сих пор я пытался агрегировать ежечасно и строил ключ с user_id и input_date_time_s, тем не менее он не настолько точен, как хотелось бы

df_1["incoming_date_time_s"] = df_1["incoming_date_time"].apply(lambda x: datetime.datetime(x.year, x.month, x.day, x.hour))

Вот интересующий кадр данных

import pandas as pd
import datetime

df_1 = pd.DataFrame({'user_id':['01', '02', '03', '03', '01', '01',  '03', '01', '03', '01'],
'incoming_date_time':['2018-10-31 00:01:56', '2018-10-31 00:03:04', '2018-10-31 00:03:32', '2018-10-31 00:03:38','2018-10-31 00:03:40', '2018-10-31 00:03:53', '2018-10-31 00:03:48', '2018-10-31 00:04:04', '2018-10-31 00:05:20', '2018-10-31 00:05:31'], 
'order_id':[123, 124, 125, 126, 127, 128, 129, 131, 132, 132], 
'Supposed_counting_result':[1, 1, 1, 1, 2, 2, 1, 2, 2, 3]})

df_1['incoming_date_time'] = pd.to_datetime(df_1['incoming_date_time'])

Вы можете увидеть ожидаемый результат агрегирования, как в "Suppposed_counting_result".Есть ли разумный способ выполнить эту агрегацию?Спасибо за любую идею.

...