Использование данных для построения табл.Избегайте создания фрейма данных - PullRequest
0 голосов
/ 18 июня 2019

Pandas dataframe имеет большой вес, поэтому я хочу этого избежать.Но я хочу построить 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)

ошибка: длина имен (1) не соответствует длине массивов (2)

1 Ответ

0 голосов
/ 18 июня 2019

См. Документацию 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
...