gpt4 book ai didi

python - Pandas :按 A 列分组并从其他列列出元组?

转载 作者:太空狗 更新时间:2023-10-29 17:47:36 25 4
gpt4 key购买 nike

我想将用户交易汇总到 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)]

但也许有一种方法可以在不对两列进行“元组化”的情况下进行排序?

最佳答案

apply(list) 将考虑系列索引而不是值。我认为您正在寻找

df.groupby('user')[['time', 'amount']].apply(lambda x: x.values.tolist())
user1    [[23.0, 2.99], [50.0, 1.99]]2                  [[12.0, 1.99]]

关于python - Pandas :按 A 列分组并从其他列列出元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46622869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com