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

Polars中如何命名group_by结合n_unique生成的统计列?

Polars替代Pandas分组统计行数并重命名列的正确写法

首先明确你的需求:按指定字段分组后统计每组的记录行数,将结果列命名为Count,这对应Pandas的groupby.size()功能。你当前用n_unique()的方式错误,原因及修正方案如下:

  1. n_unique()的错误原因

    • n_unique()是用来计算列的唯一值数量,而非分组的记录行数,和你要实现的Pandassize()功能完全不符。
    • Polars的GroupBy对象的n_unique()方法不需要传入参数(默认返回所有列的唯一值统计),你传入"Count"属于多传参数,因此触发TypeError。
  2. 正确实现代码
    要实现和原Pandas代码一致的逻辑,使用agg()结合pl.count()或pl.len(),通过alias()指定结果列名:

    # 方式1:用pl.count()统计分组总行数
    return data.groupby(list_of_fields).agg(pl.count().alias("Count"))
    
    # 方式2:用pl.len()(效果与count()一致,统计分组内记录数)
    return data.groupby(list_of_fields).agg(pl.len().alias("Count"))
    

    若你需要统计某一列的非空行数(对应Pandas的groupby.count()),可指定具体列:

    return data.groupby(list_of_fields).agg(pl.col("target_column").count().alias("Count"))
    
  3. 补充:若需计算唯一值数量
    如果你实际需求是统计某列的唯一值个数,正确写法为:

    return data.groupby(list_of_fields).agg(pl.col("target_column").n_unique().alias("UniqueCount"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:09:54