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

如何在Polars中通过单个表达式选择指定前缀开头的列并支持懒加载?

如何在Polars中用单个表达式筛选指定前缀的列(支持懒加载)

当然可以!在Polars里你完全能用更简洁的单个表达式实现这个需求,而且天然支持懒加载模式,不用额外复杂操作。下面给你两种常用的实现方式:

方法1:使用正则表达式匹配列名

Polars的pl.col()支持直接传入正则表达式来筛选列,用^表示匹配字符串开头,刚好适合你的前缀筛选需求:

import polars as pl

df = pl.DataFrame(
    {"prefix_a": [1, 2, 3], "prefix_b": [1, 2, 3], "some_column": [3, 2, 1]}
)

# 立即执行筛选
result = df.select(pl.col("^prefix_.*"))
print(result)

输出结果会只保留prefix_a和prefix_b两列,完全符合你的预期。

方法2:使用列名方法链(更易读)

如果你不太熟悉正则,Polars在0.17.0及以上版本提供了更直观的语义化方法:name.starts_with(),写法如下:

df.select(pl.col().name.starts_with("prefix_"))

这个写法和正则方式效果完全一致,但可读性更强,一眼就能看出是筛选以prefix_开头的列。

关于懒加载的实现

Polars的懒加载非常简单,只需要把普通的DataFrame转换成LazyFrame(调用lazy()方法),所有后续操作都会延迟执行,直到你调用collect()才会实际计算:

# 创建懒加载的查询计划
lazy_df = df.lazy().select(pl.col().name.starts_with("prefix_"))

# 直到调用collect()才会真正执行计算
final_result = lazy_df.collect()
print(final_result)

这种模式下,筛选操作会被加入查询计划,不会立即占用计算资源,完美满足懒加载的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:18:10