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

如何在Polars DataFrame中筛选含单个空格单元格的列?

筛选Polars DataFrame中包含单个空格的列

原始DataFrame定义

import polars as pl

df = pl.DataFrame({
    "col_A": [" ", "a 2"],
    "col_B": [1, 2],
    "col_C": ["c 1", " "],
    "col_D": ["d1", "d2"]
})

需求

筛选出所有包含单个空格" "作为单元格值的列,预期结果为['col_A', 'col_C']

当前错误代码及问题

df.select(pl.col(pl.String)).filter(pl.any_horizontal(pl.all() == " ")).columns

上述代码返回所有字符串类型列,未实现目标过滤效果。原因是filter(pl.any_horizontal(pl.all() == " "))是按行筛选——只要某一行存在任意一列等于空格,就保留该行,最终取这些行的所有列名,因此无法精准筛选出包含空格值的列。

正确解法

方法1:利用Polars表达式直接筛选列

通过pl.col().is_in([" "]).any()判断每一列是否存在单个空格值,再筛选符合条件的字符串列:

result_cols = df.select(
    pl.col(pl.String).filter(pl.col().is_in([" "]).any())
).columns
print(result_cols)  # 输出: ['col_A', 'col_C']

方法2:遍历列进行检查

通过遍历所有列,先判断列类型为字符串,再检查该列是否存在单个空格值:

result_cols = [
    col for col in df.columns
    if df[col].dtype == pl.String and (df[col] == " ").any()
]
print(result_cols)  # 输出: ['col_A', 'col_C']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:37:36