clo*_*g14 5 pandas parquet apache-arrow pyarrow
将镶木地板文件转换为数据框时,我遇到了文件类型问题。
我愿意
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()
Run Code Online (Sandbox Code Playgroud)
当我这样做时read_pq,我得到
pyarrow.Table
_COL_0: decimal(9, 0)
_COL_1: decimal(9, 0)
_COL_2: decimal(9, 0)
_COL_3: decimal(9, 0)
Run Code Online (Sandbox Code Playgroud)
当我这样做时df = read_pd.to_pandas(); df.dtypes,我得到
_COL_0 object
_COL_1 object
_COL_2 object
_COL_3 object
dtype: object
Run Code Online (Sandbox Code Playgroud)
原始数据都是整数。当我对 pandas 数据帧中的对象进行操作时,操作非常缓慢。
pd.to_numeric或类似的方法?decimal(9, 0)?还是最好直接在熊猫数据帧上进行转换?
我试过:read_pq.column('_COL_0').cast('int32')抛出一个错误,如
No cast implemented from decimal(9, 0) to int32
Run Code Online (Sandbox Code Playgroud)
小智 2
Pandas 对整数之类的东西很有趣。根据我在阅读 pandas 文档时的理解,Pandas 似乎并没有真正的 int 与 float 的概念,并且主要适用于 float 值。
在这种情况下,我将继续使用 astype 开始处理您的数据,如下所示:
df['_COL_0'] = df['_COL_0'].astype(float)
Run Code Online (Sandbox Code Playgroud)
如果它们确实都是整数,那么您应该能够使用这个简单的 for 循环将所有 pandas 系列(列)转换为浮点值,如下所示:
for col in df.columns:
df[col] = df[col].astype(float)
Run Code Online (Sandbox Code Playgroud)
让我知道这是否适合您,我刚刚在我的 Jupyter NoteBook 中进行了测试,看起来很有效。
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |