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

如何在Pandas中按分组将列值替换为组内最频繁值?

Pandas:按ID分组将category替换为组内最频繁值

核心代码实现

先构造示例数据:

import pandas as pd

df = pd.DataFrame({
    'ID': [1,1,1,1,2,2,2,2,3,3,3,3],
    'category': ['A','A','B','A','A','A','B','B','B','B','C','A']
})

执行替换操作的核心代码:

df['category'] = df.groupby('ID')['category'].transform(lambda x: x.value_counts().idxmax())

代码解释

  • groupby('ID'):按ID字段对数据分组,确保每个组内都是同一ID的记录
  • transform:保留原DataFrame的行结构,将每个组的计算结果映射回对应行,避免分组后数据维度变化
  • x.value_counts().idxmax():对每个组的category列统计各值出现频次,取频次最高的值(众值);若多个值频次相同,idxmax()会返回第一个出现的众值,符合题目"任意值均可"的要求

执行结果

运行代码后,输出的DataFrame如下:

ID category
0    1        A
1    1        A
2    1        A
3    1        A
4    2        B
5    2        B
6    2        B
7    2        B
8    3        B
9    3        B
10   3        B
11   3        B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:55:18