gpt4 book ai didi

pandas - 将 Parquet 数据转换为 Pandas 数据框时的数据类型问题

转载 作者:行者123 更新时间:2023-12-04 11:46:06 24 4
gpt4 key购买 nike

将 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 对整数等很有趣。根据我在阅读 Pandas 文档时的理解,Pandas 似乎并没有真正的 int 与 float 的概念,并且主要适用于 float 值。
    在这种情况下,我会继续使用 astype 开始处理您的数据,如下所示:

    df['_COL_0'] = df['_COL_0'].astype(float)
    如果它们确实都是整数,那么您应该能够使用这个简单的 for 循环将所有 Pandas 系列(列)转换为浮点值,如下所示:
    for col in df.columns:
    df[col] = df[col].astype(float)
    如果这对您有用,请告诉我,我刚刚在我的 Jupyter NoteBook 中进行了测试,似乎成功了。

    关于pandas - 将 Parquet 数据转换为 Pandas 数据框时的数据类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54866522/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com