如何使用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
相关产品推荐
相关产品推荐

