Je voudrais regrouper les transactions des utilisateurs dans les listes de pandas. Je n'arrive pas à comprendre comment faire une liste comprenant plus d'un champ. Par exemple,Pandas: grouper la colonne A et faire des listes de tuples à partir d'autres colonnes?
df = pd.DataFrame({'user':[1,1,2,2,3],
'time':[20,10,11,18, 15],
'amount':[10.99, 4.99, 2.99, 1.99, 10.99]})
qui ressemble à
amount time user
0 10.99 20 1
1 4.99 10 1
2 2.99 11 2
3 1.99 18 2
4 10.99 15 3
Si je
print(df.groupby('user')['time'].apply(list))
Je reçois
user
1 [20, 10]
2 [11, 18]
3 [15]
mais si je
df.groupby('user')[['time', 'amount']].apply(list)
Je reçois
user
1 [time, amount]
2 [time, amount]
3 [time, amount]
Merci à une réponse ci-dessous, j'ai appris que je peux le faire
df.groupby('user').agg(lambda x: x.tolist()))
pour obtenir
amount time
user
1 [10.99, 4.99] [20, 10]
2 [2.99, 1.99] [11, 18]
3 [10.99] [15]
mais je vais vouloir trier le temps et les montants dans le même ordre - afin que je puisse passer par les transactions de chaque utilisateur dans l'ordre.
Je cherchais un moyen de produire ceci:
amount-time-tuple
user
1 [(20, 10.99), (10, 4.99)]
2 [(11, 2.99), (18, 1.99)]
3 [(15, 10.99)]
mais peut-être il y a un moyen de faire le genre sans « Tupling » les deux colonnes?
peut que vous publiez votre ensemble de données souhaitées? – MaxU