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

如何基于列内值条件过滤(排除)Polars DataFrame中的列?

解决Polars DataFrame按列标准差过滤列的问题

你当前的代码polars_df.select(cs.numeric() != 0)是对每个数值列的所有元素做"不等于0"的判断,生成的是布尔值列,这和你要筛选列的需求不符。要保留标准差大于0的列,需要先计算列的标准差,再基于结果筛选列名,具体实现方式如下:

方法一:分步实现

  1. 计算所有列的标准差,得到以列名为索引的Series:
std_results = polars_df.std()
  1. 筛选出标准差大于0的列名:
keep_columns = std_results[std_results > 0].index.to_list()
  1. 用筛选后的列名选择原DataFrame的列:
polars_df = polars_df.select(keep_columns)

方法二:链式简洁写法

可以把步骤合并成一行代码,更紧凑:

polars_df = polars_df.select([col for col in polars_df.columns if polars_df[col].std() > 0])

方法三:Polars风格的表达式写法

利用Polars的类型选择和动态过滤,更贴合框架设计:

import polars as pl

polars_df = polars_df.select(
    pl.col(pl.NUMERIC_DTYPES).filter(lambda s: s.std() > 0)
)

以上三种方式都能得到只保留标准差大于0的列的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:13:14