【发布时间】:2019-07-18 21:01:10
【问题描述】:
在将 parquet 文件转换为数据框时,我遇到了文件类型问题。
我愿意
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
原始数据都是整数。当我对 pandas 数据框中的对象进行操作时,操作非常缓慢。
- 如何将 parquet 列转换为可在 pandas 中读取为 int 或 float 的格式?
- 或者最好还是像上面那样对 pandas 数据框进行操作并使用
pd.to_numeric或类似的? - 还是原始数据格式
decimal(9, 0)有问题?
还是直接在 pandas 数据框上转换最好?
我试过了:read_pq.column('_COL_0').cast('int32') 抛出类似的错误
No cast implemented from decimal(9, 0) to int32
【问题讨论】:
标签: pandas parquet pyarrow apache-arrow