У меня есть следующее, работающее с большим количеством уникальных идентификаторов, чтобы перебрать и создать сводную статистику на основе текущих + предыдущих посещений.Хотя это работает для небольшого количества данных, этот код может быть довольно длинным на большом наборе.Есть ли более быстрый способ приблизиться к этому (без использования многопроцессорной обработки)?
import pandas as pd
d = {
'id': ['A','B', 'B', 'C'],
'visit_id': ['asd', 'awd', 'qdw', 'qwb'],
'value': [-343.68, 343.68, -55.2, 55.2]}
df = pd.DataFrame(data=d)
agg_users = pd.DataFrame()
for i in df['id'].unique():
user_tbl = df.loc[df['id']==i]
user_tbl.insert(0, 'visit_sequence', range(0, 0 + len(user_tbl)))
agg_sessions = pd.DataFrame()
for i in user_tbl['visit_sequence']:
tmp = user_tbl.loc[user_tbl['visit_sequence'] <= i]
ses = tmp.loc[user_tbl['visit_sequence'] == i, 'visit_id'].item()
aggs = {
'value': ['min', 'max', 'mean']
}
tmp2 = tmp.groupby('id').agg(aggs)
new_columns = [k + '_' + agg for k in aggs.keys() for agg in aggs[k]]
tmp2.columns = new_columns
tmp2.reset_index(inplace=True)
tmp2.insert(1, 'visit_id', ses)
agg_sessions = pd.concat([agg_sessions, tmp2])
agg_users = pd.concat([agg_users, agg_sessions])
agg_users