You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas按cust_id分组生成升序客户产品列表

解决方案

要生成每个客户按升序排列的产品列表,只需在分组后对产品集合进行排序即可。以下是可行代码:

df_result = df.groupby('cust_id')['product'].apply(lambda x: sorted(x.unique())).reset_index(name='product_list')

代码说明

  • groupby('cust_id'):按客户ID完成分组
  • lambda x: sorted(x.unique()):对每个分组的产品列先去重(避免同一客户重复购买同一产品的情况),再按字母升序排序,最终生成有序列表
  • reset_index(name='product_list'):重置索引并将结果列命名为product_list

验证结果

运行上述代码后,得到的结果与预期完全一致:

cust_id                  product_list
0        1                ['phone', 'tv']
1        2                 ['ball', 'bat']
2        3                      ['bat']
3        4  ['ball', 'bat', 'phone', 'tv']
4        5                      ['tv']
5        6                      ['bat']
6        7  ['ball', 'bat', 'phone', 'tv']
7        8                ['phone', 'tv']

问题原因

你之前用unique()或list()生成的列表,仅保留了产品在原DataFrame中的出现顺序,没有做升序排序处理,因此结果不符合要求。通过在apply中加入sorted(),就能实现列表元素的有序排列。

内容的提问来源于stack exchange,提问作者Danish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:10:38