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

标签 pyarrow

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) 不匹配

最佳答案

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

关于pyarrow - 使用数据构建表。避免创建数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56639101/

相关文章:

python - 使用pyarrow时无法加载libhdfs

python - 属性错误: module 'dill._dill' has no attribute 'log'

pyspark - pyarrow 错误 : toPandas attempted Arrow optimization

python - Pyspark:pyarrow.lib.ArrowInvalid: 'utf-32-le' 编解码器无法解码位置 0-3 中的字节:代码点不在范围内(0x110000)

python - "Raise RuntimeError(' 在 32 位 Windows 上不受支持 安装 pyarrow 时 ')"

parquet - 如何使用 pyarrow 流式传输 Parquet ?

c++ - 如何在 C++ 中保存 Parquet 文件中的时间戳并将其加载到 Python Pandas 中?

python - Pyarrow 数据集读取特定列和特定行

python - 使用谓词过滤 pyarrow.parquet.ParquetDataset 中的行

python - 使用 Array<Map<String,String>> 列读取 Parquet 文件