如何直接创建pyarrow.StructScalar?除类型转换外还有其他方法吗?
创建PyArrow StructScalar的其他直接方法
除了你提到的pac.cast()类型转换方式,还有以下几种直接创建pa.StructScalar的方法:
- 使用
pa.scalar()直接构造
这是最常用的直接创建方式,支持传入Python字典或元组(需与结构体字段顺序匹配),并指定目标Struct类型:
import pyarrow as pa # 从字典创建 struct_scalar = pa.scalar( {"hello": "greetings", "world": 5}, type=pa.struct([("hello", pa.string()), ("world", pa.int16())]) ) # 从元组创建(需匹配结构体字段顺序) struct_scalar_from_tuple = pa.scalar( ("greetings", 5), type=pa.struct([("hello", pa.string()), ("world", pa.int16())]) ) print(f"{struct_scalar=}") print(f"{struct_scalar_from_tuple=}")
- 通过
pa.StructScalar类方法创建StructScalar提供了from_pylist等类方法,适合处理简单或嵌套的结构体数据,同时支持指定类型:
import pyarrow as pa # 从普通字典创建 struct_scalar = pa.StructScalar.from_pylist( {"hello": "greetings", "world": 5}, type=pa.struct([("hello", pa.string()), ("world", pa.int16())]) ) # 创建嵌套结构体标量 nested_struct_scalar = pa.StructScalar.from_pylist( {"name": "Alice", "info": {"age": 30, "city": "New York"}}, type=pa.struct([ ("name", pa.string()), ("info", pa.struct([("age", pa.int32()), ("city", pa.string())])) ]) )
- 从StructArray中提取标量
先构造Struct类型的数组,再通过索引获取单个元素,得到的就是pa.StructScalar实例:
import pyarrow as pa # 创建Struct数组 struct_array = pa.array( [{"hello": "greetings", "world": 5}, {"hello": "hi", "world": 10}], type=pa.struct([("hello", pa.string()), ("world", pa.int16())]) ) # 提取第一个元素作为结构体标量 struct_scalar = struct_array[0] print(f"{struct_scalar=}") print(f"类型验证:{isinstance(struct_scalar, pa.StructScalar)}")
内容的提问来源于stack exchange,提问作者bzm3r
相关产品推荐
相关产品推荐

