如何在Python-Polars中选择除指定列外的所有整数列?
Polars高效选择整数列并排除指定列
要实现选择所有整数列但排除p和z列的需求,不用手动逐个列名,用Polars内置的选择器(selectors)可以高效解决,以下是两种实用方法:
方法1:选择器逻辑组合
利用polars.selectors的逻辑运算,先匹配所有整数类型列,再排除指定列:
import polars as pl import polars.selectors as cs # 原始DataFrame定义 df = pl.DataFrame( { 'p': [1, 2, 1, 3, 1, 2], 'x': list(range(6, 0, -1)), 'y': list(range(2, 8)), 'z': [3, 4, 5, 6, 7, None], "q" : list('abcdef') } ) # 选择整数列并排除p、z result = df.select(cs.integer() ~ cs.by_name("p", "z")) print(result)
方法2:列对象的exclude方法
先通过选择器选中所有整数列,再调用exclude方法移除指定列:
result = df.select(pl.col(cs.integer()).exclude("p", "z")) print(result)
两种方法都会得到相同的结果:
shape: (6, 2) x y i64 i64 6 2 5 3 4 4 3 5 2 6 1 7
原理说明
cs.integer():匹配DataFrame中所有整数类型的列(包括i64等整数类型)~ cs.by_name("p", "z"):对指定列名取反,即排除这些列pl.col(cs.integer()).exclude("p", "z"):先筛选整数列,再从结果中排除指定列名
这两种方式都能轻松应对列数众多的场景,无需手动枚举列名。
内容的提问来源于stack exchange,提问作者Talha Tayyab
相关产品推荐
相关产品推荐

