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

如何在Polars中高效删除指定列之后的所有列?

在Polars中保留起始列到指定列(含)的高效实现方式

Polars提供了两种高效的实现方式,完全匹配你的需求,且充分利用其列存引擎的性能优势:

方式一:基于列索引切片

和你在Pandas中的思路逻辑一致,先定位目标列的索引,再切片选择范围:

import polars as pl

# 读取CSV文件(大文件推荐用scan_csv做惰性读取)
df = pl.read_csv("your_data.csv")
# 获取目标列'XYZ'的索引位置
col_position = df.columns.index('XYZ')
# 选择从第0列到目标列的所有列(包含目标列)
filtered_df = df[:, :col_position + 1]

针对超大文件的惰性读取优化版本:

lf = pl.scan_csv("your_large_data.csv")
col_position = lf.columns.index('XYZ')
filtered_lf = lf[:, :col_position + 1]
# 按需触发计算并转为DataFrame
filtered_df = filtered_lf.collect()

方式二:基于列名列表选择

先提取目标范围内的列名列表,直接选择这些列,代码可读性更强:

import polars as pl

df = pl.read_csv("your_data.csv")
# 生成从起始列到'XYZ'的列名列表
target_columns = df.columns[:df.columns.index('XYZ') + 1]
# 选择目标列
filtered_df = df.select(target_columns)

惰性读取版本:

lf = pl.scan_csv("your_large_data.csv")
target_columns = lf.columns[:lf.columns.index('XYZ') + 1]
filtered_lf = lf.select(target_columns)
filtered_df = filtered_lf.collect()

补充说明

  • 两种方法都是零拷贝操作,不会额外占用内存,性能拉满;
  • 处理超大型文件时,务必使用scan_csv的惰性模式,它只会加载和处理你需要的列,避免内存溢出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:12:07