Polars能否解析含混合数据类型数组的JSON?如何指定有效Schema?
Polars解析含混合数据类型数组的JSON方案
Polars无法直接通过pl.read_json指定Schema来解析这种数组内混合字符串与对象的JSON结构,但可以通过读取后的数据转换操作,得到你期望的结果。
实现步骤与代码示例
import json from io import StringIO import polars as pl json_input = StringIO(json.dumps({"data": [["group a", {"value": 100.0}]]})) # 读取原始JSON数据 df = pl.read_json(json_input) # 转换为目标格式 result_df = ( df .explode("data") # 展开嵌套的数组 .with_columns( pl.col("data").list.get(0).alias("group"), # 提取数组中的字符串元素作为group列 pl.col("data").list.get(1).struct.field("value").alias("value") # 提取数组中对象的value字段 ) .drop("data") # 删除原始data列 ) print(result_df)
代码说明
explode("data"):将data列中的嵌套数组展开为单行数据,方便后续提取元素list.get(0):从混合数组中取出第一个字符串元素,命名为group列struct.field("value"):从混合数组的第二个对象元素中,提取value字段值- 最后删除不再需要的原始
data列,得到目标结构的DataFrame
运行上述代码后,输出结果与你期望的一致:
shape: (1, 2) ┌─────────┬───────┐ │ group ┆ value │ │ --- ┆ --- │ │ str ┆ f64 │ ╞═════════╪═══════╡ │ group a ┆ 100.0 │ └─────────┴───────┘
内容的提问来源于stack exchange,提问作者mynameisgooch
相关产品推荐
相关产品推荐

