1

I have a following problem. I would like to convert dataframe into list of tuples based on a category. See simple code below:

data = {'product_id': ['5', '7', '8', '5', '30'], 'id_customer': ['1', '1', '1', '3', '3']}
df = pd.DataFrame.from_dict(data)

#desired output is:
result = [('5', '7', '8'), ('5', '30')]

how can I do it please? This question did not help me: Convert pandas dataframe into a list of unique tuple

FObersteiner
  • 22,500
  • 8
  • 42
  • 72
vojta
  • 122
  • 1
  • 15

2 Answers2

2

Use GroupBy.agg with tuple like:

print (df.groupby('id_customer', sort=False)['product_id'].agg(tuple).tolist())
print (df.groupby('id_customer', sort=False)['product_id'].apply(tuple).tolist())

print (list(df.groupby('id_customer', sort=False)['product_id'].agg(tuple)))
print (list(df.groupby('id_customer', sort=False)['product_id'].apply(tuple)))
[('5', '7', '8'), ('5', '30')]
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252
1

Use groupby.agg:

>>> [tuple(v) for _, v in df.groupby('id_customer')['product_id']]
[('5', '7', '8'), ('5', '30')]
>>> 
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252
U13-Forward
  • 69,221
  • 14
  • 89
  • 114