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

如何按user_id出现频率降序排序DataFrame并去除重复值?

解决方案

嘿,这就帮你实现按user_id出现频率降序排列并去重的需求!下面是两种简洁可行的方法:

方法一:分步实现(逻辑清晰)

先统计频次、确定排序规则,再筛选去重并重新排列:

import pandas as pd

# 第一步:统计每个user_id的出现次数,结果默认按降序排列
user_freq = df['user_id'].value_counts()

# 第二步:提取按频率降序排列的user_id列表
sorted_user_ids = user_freq.index.tolist()

# 第三步:筛选目标user_id、去重保留第一条记录,最后按频率顺序重排
result_df = (
    df[df['user_id'].isin(sorted_user_ids)]
    .drop_duplicates(subset='user_id', keep='first')
    .set_index('user_id')
    .reindex(sorted_user_ids)
    .reset_index()
)

方法二:极简写法(一步到位)

利用groupby和value_counts的索引特性,直接完成分组+排序:

import pandas as pd

# 按user_id分组取第一条记录,再按出现频率降序排列
result_df = df.groupby('user_id').first().loc[df['user_id'].value_counts().index].reset_index()

效果说明

两种方法都会达成你想要的结果:

  • 每个user_id仅保留一条记录(取该用户首次出现的o_date和month值)
  • DataFrame整体按user_id的出现频率从高到低排列,和Series.value_counts()的顺序完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:42:33