如何按行索引筛选Polars LazyFrame?哪种方法更优?
在Polars LazyFrame中获取指定行的惯用方法
在Polars里从LazyFrame提取指定行,你给出的两种方法都能实现需求,但还有更贴合惯用写法的方式,下面逐一分析:
方法分析与推荐
你的现有方法
- 方法1(行索引过滤):逻辑直观,通过新增行索引列来筛选目标行,但需要额外的列创建和删除操作,数据量较大时会有轻微性能损耗。
- 方法2(
select+gather):比方法1更高效,不需要额外列操作,但写法可以进一步简化。
更简洁的惯用写法
Polars官方推荐直接调用LazyFrame.gather()方法来按位置选取行,这是专门设计的API,写法更简洁:
import polars as pl df = pl.DataFrame({"x": ["a", "b", "c", "d"]}).lazy() rows = [1, 3] # 惯用写法 result = df.gather(rows).collect()
适用场景补充
- 如果是按行的位置索引获取数据,
gather是最优选择,性能和可读性都最佳; - 如果需要基于某列的取值(而非位置)筛选行,那方法1的过滤方式更适合。
内容的提问来源于stack exchange,提问作者IceCreamToucan
相关产品推荐
相关产品推荐

