Построить последовательности из фрейма данных с использованием словарей в Python

Я хотел бы построить последовательности истории покупок пользователей, используя словари в Python. Я бы хотел, чтобы эти последовательности были упорядочены по дате.

У меня есть 3 столбца в моем кадре данных:

users items date 1 1 date_1 1 2 date_2 2 1 date_3 2 3 date_1 4 5 date_2 4 1 date_5 4 3 date_3 

И результат должен быть таким:

 {1: [[1,date_1],[2,date_2]], 2:[[3,date_1],[5,date_2],[1,date_3]], 4:[[5,date_2],[3,date_3][1,date_5]]} 

Мой код:

 df_sub = df[['uid', 'nid', 'date']] dic3 = df_sub.set_index('uid').T.to_dict('list') 

И мои результаты:

 {36864: [258509L, '2014-12-03'], 548873: [502105L, '2015-09-08'], 42327: [492268L, '2015-01-29'], 548873: [370049L, '2015-02-18'], 36864: [258909L, '2016-01-13'] ... } 

Но я хотел бы группировать пользователи:

  {36864: [[258509L, '2014-12-03'],[258909L, '2016-01-13']], 548873: [[502105L, '2015-09-08'],[370049L, '2015-02-18']], 42327: [492268L, '2015-01-29'] } 

Помогите, пожалуйста!

One Solution collect form web for “Построить последовательности из фрейма данных с использованием словарей в Python”

Во-первых, установите пользователей в качестве индекса и выполните groupby . Затем вы можете передать функцию, чтобы сортировать каждую группу по столбцу даты и извлекать ее основную часть массива с использованием .values .

Используйте .tolist чтобы вернуть его эквивалент list . Это даст вам необходимый формат. Наконец, используйте .to_dict чтобы получить окончательный результат в виде словаря.

 fnc = lambda x: x.sort_values('date').values.tolist() df.set_index('users').groupby(level=0).apply(fnc).to_dict() 

производит:

 {1: [[1, 'date_1'], [2, 'date_2']], 2: [[3, 'date_1'], [1, 'date_3']], 4: [[5, 'date_2'], [3, 'date_3'], [1, 'date_5']]} 
  • Stackplot, используя список значений словаря (Python 3.x)
  • Замена слова в списке со значением из dict
  • Почему значения OrderedDict не равны?
  • Словарь в python с порядком, который я установил при запуске
  • Словарь Python vs list, который быстрее?
  • Изменение стиля маркера в разрезе по третьей переменной
  • Построить гистограмму из словаря
  • Как читать и хранить значения из текстового файла в словаре.
  • Какое исключение вызывается, если ключ не найден в словаре Python?
  • Словарь, где ключи представляют собой пару целых чисел в Python
  • Python: рекурсивный доступ к dict через атрибуты, а также доступ к индексу?
  • Python - лучший язык программирования в мире.