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

求助:Pandas中按用户分组选取对应最高访问量的产品信息

解决方法:获取每个客户对应最高访问次数的完整记录

我完全懂你的困扰!你想要的是每个客户ID下,对应最高No_visits的那一行完整数据,而不是把product_code和No_visits各自的最大值单独提取出来——之前的groupby().max()确实会做后者,这就偏离了你的需求。

下面给你两种简单可靠的实现方法:

方法1:使用idxmax()定位目标行

idxmax()会返回每组中No_visits最大值对应的行索引,再通过loc提取完整行:

# 注意列名是No_visits(首字母大写,和你原DataFrame保持一致)
result = df.loc[df.groupby('customer_id')['No_visits'].idxmax()]
# 可选:重置索引让结果更整洁
result = result.reset_index(drop=True)

运行后就能得到你预期的结果:

customer_idproduct_codeNo_visits
110045
25060

方法2:排序后去重

先按客户ID升序、No_visits降序排序,这样每个客户的第一条记录就是访问次数最多的,再通过drop_duplicates保留每组第一条:

result = df.sort_values(
    by=['customer_id', 'No_visits'],
    ascending=[True, False]
).drop_duplicates(subset='customer_id').reset_index(drop=True)

这个方法逻辑直观,适合需要先查看排序后数据的场景。

小提醒

你之前的代码里写了no_visits(全小写),但原DataFrame的列名是No_visits(首字母大写),这种大小写不一致也会导致错误,记得保持列名统一哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:22