У меня проблема с типами файлов при преобразовании файла паркета в фрейм данных.
Я делаю
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