Как сгрупировать по ID все значения в лист?
Есть фрейм данных со столбцами id и value. Для одного id есть несколько полей с разными значениями.
Как пройтись циклом for, чтобы переместить все значения в одну строку через запятую?
Входные данные:
id value
-- -----
0 7984
0 488
0 333
0 499
1 22
1 445
Ожидаемые данные:
id value
-- -----
0 [7984, 488, 333, 499]
1 [22, 445]
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Группируем по одному столбцу, а значения другого преобразовываем в списки:
res = df.groupby("id")["value"].apply(list).reset_index()
результат:
In [25]: res
Out[25]:
id value
0 0 [7984, 488, 333, 499]
1 1 [22, 445]
Автор решения: Danis
→ Ссылка
dict_ = {}
for id, value in zip(data["id"], data["value"]):
try:
dict_[id].append(value)
except:
dict_[id] = [value]
res = pd.DataFrame([{"id": list(dict_.keys()), "value": list(dict_.values())}]).T