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

如何用Polars API筛选唯一值少于3的列?求更惯用实现方式

在Polars中筛选唯一值数量少于指定阈值的列

你可以直接利用Polars的表达式API,通过select配合列级条件判断完成筛选,这是最符合Polars风格的惯用写法,无需额外的Python循环或类型转换:

import polars as pl

df = pl.DataFrame({"col1":[1,1,2], "col2":[1,2,3], "col3":[3,3,3]})
df_few_unique = df.select(pl.col(pl.all().n_unique() < 3))

写法解释

  • pl.all().n_unique() < 3:对所有列计算唯一值数量,生成布尔掩码标记出唯一值数量小于3的列
  • pl.col(...):根据布尔掩码筛选对应列,直接传入select方法即可完成列过滤

对比原有实现

你的代码需要将掩码转换为NumPy数组后循环筛选列,而上面的写法完全利用Polars的向量化表达式能力,代码更简洁,还能避免Python层面的循环开销,执行效率更高。

反向筛选的等价写法

如果习惯用drop操作,也可以通过排除不符合条件的列实现同样效果:

df_few_unique = df.drop(pl.col(pl.all().n_unique() >= 3))

和Pandas写法的对比

Pandas中你用df.loc[:, mask]完成列筛选,Polars的写法更紧凑,直接在select中内嵌列级条件判断,无需单独生成掩码变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:03:16