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

如何在Polars DataFrame的paths列split后选取列表最后一项?

解决Polars中分割文件路径并提取最后一项的问题

在Polars的懒加载模式(pl.scan_csv)下,不能直接用Python列表的[-1]索引操作分割后的列,得用Polars内置的数组/字符串表达式方法,以下是几种可行方案:

方法1:分割后取数组最后一项

利用str.split将路径转为数组,再通过arr.last()提取最后一个元素:

import polars as pl

# 加载数据并处理
lazy_df = pl.scan_csv("your_dataset.csv")
result_df = lazy_df.with_columns(
    filename=pl.col("paths").str.split("/").arr.last()
).collect()

方法2:从右侧单次分割后提取

用str.rsplit只从右侧分割一次,再取最后一个元素,这种方法比全量分割更高效:

result_df = lazy_df.with_columns(
    filename=pl.col("paths").str.rsplit("/", n=1).arr.last()
).collect()

方法3:正则表达式匹配

用str.extract配合正则直接匹配最后一个斜杠后的内容:

result_df = lazy_df.with_columns(
    filename=pl.col("paths").str.extract(r"[^/]+$")
).collect()

为什么之前的方法失败?

pl.scan_csv返回的是LazyFrame,列数据是Polars的表达式对象,不是Python原生列表,因此无法直接使用[-1]这类Python列表索引操作,必须通过Polars提供的arr.xxx系列方法来操作数组类型的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:24:52