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

如何在Python Pandas DataFrame代码中识别并处理多个众数

解决Pandas多众数场景下的替换问题

你的代码在单个众数场景下能正常运行,但遇到多个频率相同的众数时,只会保留第一个众数,其他众数会被错误替换成'Other'。要处理这种情况,需要先找出所有频率最高的众数,再执行替换操作。

修改后的完整代码

import numpy as np
import pandas as pd

data19 = np.random.randint(46,50,size = 10)
df19 = pd.DataFrame(data19, columns = ["integer"])
print("原始DataFrame:")
print(df19)

freq19 = df19["integer"].value_counts()
print("\n频率统计:")
print(freq19)

# 找出所有频率等于最高频率的众数
max_freq = freq19.max()
modes = freq19[freq19 == max_freq].index

# 判断每个值是否属于众数集合
find_mode = df19["integer"].isin(modes)
# 替换非众数为'Other'
df19.loc[~find_mode, "integer"] = "Other"

print("\n处理后的DataFrame:")
print(df19)

关键修改说明

  • 先通过freq19.max()获取最高频率值,再筛选出所有频率等于该值的索引,得到全部众数,而非仅取第一个。
  • 使用isin(modes)判断元素是否属于众数集合,能同时匹配多个众数,避免遗漏。

比如当随机序列中有两个众数(如46和47都出现3次,为最高频率),修改后的代码会保留这两个值,仅替换其他值为'Other'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:55:11