微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas:按列A分组,并从其他列中列出元组?

如何解决Pandas:按列A分组,并从其他列中列出元组?

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

df.groupby('user')[['time', 'amount']].apply(lambda x: x.values.tolist())



用户
1 [[23.0,2.99],[50.0,1.99]]
2 [[12.0,1.99]]

解决方法

我想将用户交易汇总到熊猫列表中。我不知道如何制作一个包含多个字段的列表。例如,

df = pd.DataFrame({'user':[1,1,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)]

但是也许有一种方法可以在不“纠缠”两列的情况下进行排序?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。