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

Pandas按product_id分组不改变数据类型,实现按值排序取Top10

解决按唯一product_id分组并排序的问题

核心问题分析

用groupby(['product_id']).agg(['unique'])会生成多级列,且值为元组类型,导致排序报错;nunique()仅统计唯一值数量,不符合保留原始值的需求。以下是两种可行方案:


方案1:直接提取唯一值(推荐)

如果每个product_id对应的Price x Quantity只有一个唯一值,直接用agg('first')或agg(lambda x: x.unique()[0])获取单一值,避免元组和多级列:

# 分组并保留Price x Quantity的原始值
products = q3_df.groupby(['product_id'], as_index=False).agg({'Price x Quantity': 'first'})

# 按Price x Quantity降序排序,取前10
top_10_products = products.sort_values(by='Price x Quantity', ascending=False).head(10)

方案2:处理已生成的多级列和元组

如果已经用agg(['unique'])生成了结果,可以先扁平化列名,再提取元组内的唯一值:

# 分组生成结果
products = q3_df.groupby(['product_id']).agg(['unique']).reset_index()

# 扁平化多级列名
products.columns = ['_'.join(col) for col in products.columns]

# 提取元组中的唯一值(假设每个元组仅含一个元素)
products['Price x Quantity_unique'] = products['Price x Quantity_unique'].apply(lambda x: x[0])

# 排序并取前10
top_10_products = products.sort_values(by='Price x Quantity_unique', ascending=False).head(10)

注意事项

如果同一个product_id对应多个不同的Price x Quantity值,需要先明确业务需求(比如取最大值、求和等),再调整聚合函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:20:33