如何在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
相关产品推荐
相关产品推荐

