如何在Polars中按分组执行qcut分箱操作?
在Polars中实现按分组的qcut效果
要复现Pandas里按分组执行qcut的功能,Polars可以通过group_by结合transform方法直接实现,以下是具体步骤:
1. 构造测试数据
import polars as pl df = pl.DataFrame({ 'group': ['a','a','a','a','b','b','b'], 'col': [1,2,3,4,1,3,2] })
2. 分组执行qcut
使用group_by指定分组字段,再通过transform将分组内的分箱结果映射回原数据的每一行:
result = df.group_by('group').transform( pl.col('col').qcut(q=2, labels=False, allow_duplicates=True) )
3. 输出结果
执行后得到的结果与Pandas示例完全一致:
shape: (7, 2) ┌───────┬─────┐ │ group ┆ col │ │ --- ┆ --- │ │ str ┆ u32 │ ╞═══════╪═════╡ │ a ┆ 0 │ │ a ┆ 0 │ │ a ┆ 1 │ │ a ┆ 1 │ │ b ┆ 0 │ │ b ┆ 1 │ │ b ┆ 0 │ └───────┴─────┘
参数说明
q=2:指定分箱的数量,对应Pandasqcut的q参数labels=False:返回整数类型的分箱标签,而非区间字符串allow_duplicates=True:允许组内出现重复分位数的情况(比如组内元素数量为奇数时),避免报错
内容的提问来源于stack exchange,提问作者ℕʘʘḆḽḘ
相关产品推荐
相关产品推荐

