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

如何直接创建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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:29:58