Pandas分组排序问题:获取各Netflix用户最长观看影片
Netflix用户观看时长分析解决方案
1. 计算用户-影片的总观看时长
先按用户和影片维度分组,统计每部影片的累计观看时长,并转为结构化DataFrame方便后续处理:
# 统计每个用户观看各影片的总时长,重置索引转为常规DataFrame user_title_total = df_clean.groupby(['Profile Name', 'title_clean'])['Duration'].sum().reset_index()
2. 提取每个用户的最长观看时长条目
提供两种简洁的实现方式:
方式一:用idxmax()定位最大值行
通过分组找到每个用户组内时长最长的行索引,再提取对应数据:
# 获取每个用户组内时长最长的行索引 max_duration_idx = user_title_total.groupby('Profile Name')['Duration'].idxmax() # 提取最终结果 user_top_watch = user_title_total.loc[max_duration_idx]
方式二:排序后去重
先按用户升序、时长降序排序,再保留每个用户的第一条数据(即最长时长条目):
# 按用户分组、时长降序排序,去重保留每个用户的最长观看记录 user_top_watch = user_title_total.sort_values( by=['Profile Name', 'Duration'], ascending=[True, False] ).drop_duplicates(subset='Profile Name')
结果展示
基于你提供的样例数据,运行后会得到:
| Profile Name | Duration | title_clean |
|---|---|---|
| AAA | 0 days 00:41:50 | The Sinner |
| BBB | 0 days 00:00:15 | Avatar |
原代码问题说明
你之前的代码在分组求和后直接全局排序取最大1条,只会返回所有用户-影片组合中时长最高的单个结果,而非每个用户各自的最长观看条目。
内容的提问来源于stack exchange,提问作者Jakub Gabrych
相关产品推荐
相关产品推荐

