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

如何将Pandas数据集中低频列值B、D合并为‘Others’?

解决Pandas列低频类别合并为'Others'的问题

没问题,这是个很常见的类别数据处理需求,我给你两种实用的方法,你可以根据场景选择:

方法一:直接指定要合并的类别(适合已知要合并的是B和D)

如果你已经明确知道要把B和D换成'Others',直接用replace()方法就能快速搞定:

# 把下面的'category'替换成你实际的目标列名
low_freq_vals = ['B', 'D']
df['category'] = df['category'].replace(low_freq_vals, 'Others')

这个方法简单直接,一步到位,适合已经确定目标类别的固定场景。

方法二:动态识别低频类别(适合自动筛选所有低频率值)

如果后续数据可能变化,或者你想自动把所有频率低于某个阈值的类别都合并成'Others',可以先计算频率再批量替换:

# 1. 计算目标列每个类别的占比(用value_counts(normalize=True),也可以用绝对计数)
category_freq = df['category'].value_counts(normalize=True)

# 2. 筛选出频率低于5%的类别(你可以根据需求调整阈值,比如0.03就是3%)
low_freq_cats = category_freq[category_freq < 0.05].index.tolist()

# 3. 把这些低频类别统一替换为'Others'
df['category'] = df['category'].replace(low_freq_cats, 'Others')

实际效果示例

假设你的原始数据列是这样的:

category
A
A
B
C
D
C
A

用方法一处理后,结果会变成:

category
A
A
Others
C
Others
C
A

如果用方法二,只要B和D的频率低于你设定的阈值,结果也是一样的;如果之后新增了其他低频类别,这个方法会自动把它们也合并进去,灵活性更高。

小提示:如果你的目标列是Pandas的category类型(不是普通字符串),替换后可以用df['category'] = df['category'].cat.set_categories(df['category'].unique())重新整理类别,普通字符串列不需要这一步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:00