【问题标题】:Using data to construct Table. Avoid creating dataframe使用数据构造表。避免创建数据框
【发布时间】:2019-10-31 12:10:23
【问题描述】:

Pandas 数据框很重,所以我想避免这种情况。 但是我想构建 Pyarrow Table 以便以 parquet 格式存储数据。

我搜索并阅读了文档,并尝试使用 from_array() 但它不工作。

field=[pa.field('name',pa.string()),pa.field('age',pa.int64())]
arrays=[pa.array(['Tom']),pa.array([23])]
pa.Table.from_arrays(pa.schema(field),arrays)

错误是: 名称长度 (1) 与数组长度 (2) 不匹配

【问题讨论】:

    标签: pyarrow


    【解决方案1】:

    在此处查看Table.from_arrays 文档:https://arrow.apache.org/docs/python/generated/pyarrow.Table.html#pyarrow.Table.from_arrays 它期望的第一个参数是数组,而不是模式。所以你可以这样做:

    In [64]: pa.Table.from_arrays(arrays, schema=pa.schema(field))
    Out[64]: 
    pyarrow.Table
    name: string
    age: int64
    

    或传递列名而不是完整架构:

    In [65]: pa.Table.from_arrays(arrays, names=['name', 'age']) 
    Out[65]: 
    pyarrow.Table
    name: string
    age: int64
    

    在 pyarrow 的下一个版本(0.14.0)中,你也可以这样做:

    In [51]: pa.Table.from_pydict({'name': pa.array(['Tom']), 'age': pa.array([23])})
    Out[51]: 
    pyarrow.Table
    name: string
    age: int64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 2020-07-15
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      相关资源
      最近更新 更多