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

Polars中将字符串列表转为List类型:高效方案求助

解决Polars字符串列表转List类型的高效方法

针对你遇到的大数量级字符串形式列表转Polars List类型时map_elements效率低下、直接cast返回null的问题,以下是两种高效的向量化解决方案:

原因说明

直接使用series.cast(pl.List)返回null是因为Polars无法自动解析这种字符串格式的Python列表,需要用专门的字符串处理函数来解析。而map_elements逐元素调用Python函数,在数据量极大时会产生大量性能开销,导致耗时过长。

解决方案1:正则提取+类型转换

利用Polars的str.extract_all向量化函数提取所有浮点数,再转换为List类型:

import polars as pl

series1 = pl.Series(["[1.2, 3.4]", "[5.6, 7.8]", "[9.1, 2.3]"])
series2 = pl.Series(["[1.0, 3.0]", "[5.0, 7.0]", "[9.0, 2.0]"])

# 提取所有浮点数并转为List[Float64]
parsed_series1 = series1.str.extract_all(r"-?\d+\.\d+").cast(pl.List(pl.Float64))
parsed_series2 = series2.str.extract_all(r"-?\d+\.\d+").cast(pl.List(pl.Float64))
  • 正则表达式-?\d+\.\d+可以匹配正负浮点数,确保所有数值都被提取
  • 整个操作是向量化执行,性能远高于逐元素的map_elements

解决方案2:JSON解析

由于你的字符串格式和JSON数组完全兼容,直接使用str.json_decode解析:

parsed_series1 = series1.str.json_decode(pl.List(pl.Float64))
parsed_series2 = series2.str.json_decode(pl.List(pl.Float64))
  • 该方法更简洁,Polars的JSON解析是底层优化的向量化操作,处理大数量级数据时效率极高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:12:18