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

Polars中多值同为众数时返回null的实现需求

在Polars中获取唯一众数,无唯一众数时返回Null

Polars内置的mode()方法会返回所有出现频率最高的值,但如果存在多个频率相同的最大值(即没有唯一众数),我们可以通过自定义逻辑返回null,具体实现如下:

import polars as pl

if __name__ == '__main__':
    df = pl.DataFrame({"a": [1, 1, 2, 3], "b": [1, 1, 2, 2]})
    
    # 计算唯一众数,无唯一众数时返回null
    unique_mode = df.select(
        pl.when(
            # 判断最高频率的出现次数是否为1(即只有一个众数)
            pl.col("b").value_counts().select(pl.col("count").max().count()).eq(1)
        )
        .then(pl.col("b").mode().first())  # 有唯一众数时取该值
        .otherwise(None)  # 无唯一众数时返回null
        .alias("unique_mode")
    )
    
    print(unique_mode)

代码逻辑说明

  1. pl.col("b").value_counts():统计b列每个值的出现次数,生成包含b和count的临时数据框
  2. pl.col("count").max().count():找出最高出现次数,再统计这个最高次数出现的次数——如果等于1,说明只有一个值是众数;大于1则存在多个众数
  3. 通过when/then/otherwise分支逻辑,对应返回唯一众数或null

测试不同场景:

  • 当b列是[1,1,2,2]时,返回null
  • 当b列是[1,1,1,2,3]时,返回1
  • 当b列是[5,5,3,3,3,2]时,返回3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:55:57