Проблемы с типами данных при преобразовании данных паркета в кадр данных Pandas - PullRequest
0 голосов
/ 25 февраля 2019

У меня проблема с типами файлов при преобразовании файла паркета в фрейм данных.

Я делаю

bucket = 's3://some_bucket/test/usages'

import pyarrow.parquet as pq
import s3fs
s3 = s3fs.S3FileSystem()

read_pq = pq.ParquetDataset(bucket, filesystem=s3).read_pandas()

Когда я делаю read_pq, я получаю

pyarrow.Table
_COL_0: decimal(9, 0)
_COL_1: decimal(9, 0)
_COL_2: decimal(9, 0)
_COL_3: decimal(9, 0)

Когда я делаю df = read_pd.to_pandas(); df.dtypes, я получаю

_COL_0    object
_COL_1    object
_COL_2    object
_COL_3    object
dtype: object

Все исходные данные являются целыми числами.Когда я оперирую объектами в фрейме данных панд, операции выполняются очень медленно.

  • Как преобразовать столбцы паркета в формат, который будет читаться как целое число или как число с плавающей точкой в ​​пандах?
  • Или лучше всего работать с кадром данных панд каквыше и используйте pd.to_numeric или аналогичный?
  • Или есть проблема с исходным форматом данных decimal(9, 0)?

Или лучше конвертировать непосредственно в фрейм данных pandas?

Я пытался: read_pq.column('_COL_0').cast('int32') выдает ошибку вроде

No cast implemented from decimal(9, 0) to int32
...