语境
我在 S3 中对 Parquet 文件进行了分区。我想读取它们并将它们连接到一个 DataFrame 中,以便我可以查询和查看数据(在内存中)。到目前为止我已经这样做了,但是类型为 (array<array< double >>)的列数据之一被转换为None。其他列(如 str、int 数组等)被正确转换。我不确定我在这个过程中缺少什么。我想在这个转换过程中数据丢失了,或者数据在那里并且我的查询方法是错误的。
到目前为止我所做的步骤
import s3fs
import fastparquet as fp
import pandas as pd
key = 'MyAWSKey'
secret = 'MyAWSSecret'
token = 'MyAWSToken'
s3_file_system = s3fs.S3FileSystem(secret= secret, token=token, key=key)
file_names = s3_file_system.glob(path='s3://.../*.snappy.parquet')
# <class 'fastparquet.api.ParquetFile'>
fp_api_parquetfile_obj = fp.ParquetFile(files, open_with= s3_file_system.open)
data = fp_api_parquetfile_obj.to_pandas()
查询结果
# column A type is array of array of doubles
print(pd.Series(data['A']).head(10))
# Prints 10 rows of None! [Incorrect]
# column B type is array of int
print(pd.Series(data['B']).head(10))
# Prints 10 rows of array of int values correctly
# column C type is string
print(pd.Series(data['C']).head(10))
# Prints 10 rows of str values correctly
请注意,文件中存在数据(双精度数组的数组),因为我可以使用 Athena 查询它。