如何从Polars DataFrame中按列名列表选取指定列?
Polars按列名列表选取列的常用方法
首先,你的初始DataFrame定义如下:
import polars as pl import numpy as np df = pl.DataFrame( { "nrs": [1, 2, 3, None, 5], "names": ["foo", "ham", "spam", "egg", None], "random": np.random.rand(5), "groups": ["A", "A", "B", "C", "B"], } ) mylist = ['nrs', 'random']
你使用cs.by_name()的方法是可行的,但并非Polars中按列名列表选列的惯用简洁方式,更优的实现有以下几种:
1. 直接传入列名列表给select
这是最常用、最直观的方式,无需额外导入模块:
df.select(mylist)
2. 使用DataFrame索引语法
和Pandas用法类似,代码更简短:
df[mylist]
以上两种方式都能得到你想要的结果:
shape: (5, 2) ┌──────┬──────────┐ │ nrs ┆ random │ │ --- ┆ --- │ │ i64 ┆ f64 │ ╞══════╪══════════╡ │ 1 ┆ 0.727509 │ │ 2 ┆ 0.14311 │ │ 3 ┆ 0.244337 │ │ null ┆ 0.603872 │ │ 5 ┆ 0.222068 │ └──────┴──────────┘
关于cs.by_name()的适用场景
cs.by_name()属于Polars选择器工具的一部分,它更适合复杂列选择场景——比如需要和其他选择器(类型匹配、正则匹配等)组合使用时,才能体现价值:
import polars.selectors as cs # 示例:选择指定列名 + 所有浮点类型列 df.select(cs.by_name(mylist) + cs.float())
如果只是单纯按列名列表选列,使用前两种方式会更简洁高效。
内容的提问来源于stack exchange,提问作者DeltaIV
相关产品推荐
相关产品推荐

