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

DataFrame列众数生成共识序列时的NaN问题排查与解决

DataFrame列众数的NaN来源与处理方法

NaN的来源

df.mode(axis=0)返回结果里的NaN,核心原因是部分列存在多个频次相同的众数:

  • 如果某一列只有一个最高频字符(唯一众数),mode()仅在第一行输出这个字符,后续行的对应位置就用NaN填充——因为没有其他众数可输出。
  • 如果某一列有多个字符出现次数相同且均为最高频(多众数),mode()会把这些众数依次放在不同行中,没有对应众数的位置同样用NaN填充。
    你的947列里既有单众数列,也有多众数列,所以最终返回了3行结果,除第一行外,其余行都是NaN和少量多众数字符。

去除NaN并生成正确共识序列的方法

你只需要保留mode()结果的第一行(每个列的首个众数),跳过后面含NaN的行即可,无需把所有行都转成字符串。修改后的代码如下:

# 提取每个列的第一个众数组成的行
consensus = df.mode(axis=0).iloc[0]
# 拼接成共识序列
seq = ''.join(consensus.values.astype(str))

这样处理后,只会得到各列最高频字符组成的序列,不会混入NaN相关内容。

原代码用to_string()会把所有行(包括含NaN的行)转换成文本,NaN字符串会被保留下来,这就是你看到多余内容的原因。直接取第一行再拼接,能彻底规避这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:15:32