Как объединить значения, имеющие одинаковое значение в некоторых столбцах

#python #pandas

#python #панды

Вопрос:

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

ФРАГМЕНТ КОДА И ОШИБКИ

Например:

 lst = [["bread"],["Scandinavian", "Scandinavian"],["Hot chocolate", "Hot chocolate"]]
 

Комментарии:

1. вы имеете в виду: lst = [["bread"],["Scandinavian", "Scandinavian"],["Hot chocolate", "Jam"]] ?

Ответ №1:

Вы можете использовать groupby :

 df.groupby(['Transaction'])['Item'].transform(lambda x: ','.join(x))
 

Комментарии:

1. или еще проще: df.groupby(['Transaction'])['Item'].agg(',').tolist()

Ответ №2:

Вы можете использовать a defaultdict(list) для отслеживания повторения Transaction IDs в сочетании с Item и добавления значения для него в refHash

 from collections import defaultdict
refHash = defaultdict(list)

for i,id in enumerate(df['Transaction'].values):
    refHash[id]  = [df.loc[i,'Item']]

lst = list(refHash.values())