我希望能够在pandas中将用户交易汇总为列表。我无法弄清如何创建由多个字段组成的列表。例如:
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]})
看起来像
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
如果我做
print(df.groupby('user')['time'].apply(list))
我明白了
user
1 [20, 10]
2 [11, 18]
3 [15]
但如果我这样做
df.groupby('user')[['time', 'amount']].apply(list)
我知道了
user
1 [time, amount]
2 [time, amount]
3 [time, amount]
感谢下面的回答,我学会了如何做到这一点
df.groupby('user').agg(lambda x: x.tolist()))
获得
amount time
user
1 [10.99, 4.99] [20, 10]
2 [2.99, 1.99] [11, 18]
3 [10.99] [15]
但我希望按照相同的顺序排序时间和金额,这样我就可以按顺序查看每个用户的交易记录。
我正在寻找一种方法来生成这个。 amount-time-tuple
user
1 [(20, 10.99), (10, 4.99)]
2 [(11, 2.99), (18, 1.99)]
3 [(15, 10.99)]
但也许有一种方法可以在不将这两列组成元组的情况下进行排序?