#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())