Polars中如何命名group_by结合n_unique生成的统计列?
Polars替代Pandas分组统计行数并重命名列的正确写法
首先明确你的需求:按指定字段分组后统计每组的记录行数,将结果列命名为Count,这对应Pandas的groupby.size()功能。你当前用n_unique()的方式错误,原因及修正方案如下:
n_unique()的错误原因n_unique()是用来计算列的唯一值数量,而非分组的记录行数,和你要实现的Pandassize()功能完全不符。- Polars的
GroupBy对象的n_unique()方法不需要传入参数(默认返回所有列的唯一值统计),你传入"Count"属于多传参数,因此触发TypeError。
正确实现代码
要实现和原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"))补充:若需计算唯一值数量
如果你实际需求是统计某列的唯一值个数,正确写法为:return data.groupby(list_of_fields).agg(pl.col("target_column").n_unique().alias("UniqueCount"))
内容的提问来源于stack exchange,提问作者schoon
相关产品推荐
相关产品推荐

