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

如何使用Polars读取CSV时解析嵌套列表字段?

用Polars解析包含嵌套列表的CSV文件

当然可以用Polars解析这种包含嵌套列表的CSV文件。由于你的CSV中嵌套列表是用|作为内部分隔符,直接在dtypes参数中指定pl.List无法自动识别内部分隔符,必须显式处理拆分逻辑,具体实现有两种方式:

方法一:读取后转换(直观易懂,推荐)

先按普通CSV规则读取所有字段,再对目标列执行字符串拆分操作:

import polars as pl

# 读取CSV,指定无表头、分隔符为;
df = pl.read_csv(
    source="somefile.csv",
    has_header=False,
    separator=";"
)

# 将第4列(Polars默认列名为column_4)按|分割为列表
df = df.with_columns(
    pl.col("column_4").str.split("|").alias("column_4")
)

# 转换为你期望的字典格式
output_dict = df.to_dicts()[0]
print(output_dict)

方法二:读取阶段直接处理

如果想在读取时完成类型转换,可以结合schema定义字段类型,并用overrides指定目标列的解析逻辑:

import polars as pl

# 定义完整字段类型,指定column_4为列表类型
custom_schema = {
    "column_1": pl.String,
    "column_2": pl.String,
    "column_3": pl.String,
    "column_4": pl.List(pl.String),
    "column_5": pl.String,
    "column_6": pl.String,
    "column_7": pl.String,
    "column_8": pl.String,
    "column_9": pl.String
}

df = pl.read_csv(
    source="somefile.csv",
    has_header=False,
    separator=";",
    schema=custom_schema,
    # 对column_4指定解析逻辑:按|拆分字符串为列表
    overrides={"column_4": lambda s: s.str.split("|")}
)

output_dict = df.to_dicts()[0]
print(output_dict)

执行任意一种方法后,都会得到你期望的输出结构:

{
   "column_1": "Some",
   "column_2": "Csv",
   "column_3": "Data",
   "column_4": [
       "Nested",
       "Field",
       "Containing",
       "An",
       "Array"
   ],
   "column_5": "And",
   "column_6": "Some",
   "column_7": "More",
   "column_8": "Fields",
   "column_9": "Here"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:05:31