使用数据构建表。避免创建数据框

Zic*_*Lee 5 pyarrow

Pandas 数据框很重,所以我想避免这种情况。但我想构造 Pyarrow Table 以便以镶木地板格式存储数据。

我搜索并阅读了文档,并尝试使用 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)
Run Code Online (Sandbox Code Playgroud)

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

jor*_*ris 5

请参阅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
Run Code Online (Sandbox Code Playgroud)

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

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

在 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
Run Code Online (Sandbox Code Playgroud)