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

pandas DataFrame按行调用mode(axis=1)求众数返回两列异常问题

问题原因

pandas的mode(axis=1)方法会返回每行所有的众数,最终输出的列数等于全量数据中单行包含的最多个众数数量。只要数据集中任意一行存在多个出现频次并列最高的值,输出结果就会生成对应数量的列,其余行没有对应数量众数的位置会自动填充NaN。

你用3行测试样例、data.head()测试时返回单列,是因为这部分数据的每一行都只有1个众数;全量5665行数据中至少存在1行包含2个并列众数(你的数据集共6列,很容易出现某行两个值各出现3次、频次并列最高的情况),因此全量运行时返回2列。你看到前几行第二列全为NaN,是因为包含多个众数的行不在数据集前5行范围内。

解决方案
  • 如果你只需要每行取一个众数,直接提取结果的第一列即可:
# 计算每行众数,取第一个结果,返回结构为Series
row_mode = data.mode(axis=1)[0]
  • 如果需要确认哪些行存在多个众数,可以用以下代码定位:
mode_result = data.mode(axis=1)
# 筛选出第二列非空的行,即存在多个众数的行
multi_mode_rows = mode_result[~mode_result[1].isna()].index
print(f"共{len(multi_mode_rows)}行存在多个并列众数,行索引:{multi_mode_rows.tolist()}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:03:23