環境
S3 で Parquet ファイルを分割しました。データを (メモリ内で) クエリして表示できるように、それらを読み取って DataFrame に連結したいと考えています。ここまでやったのですが、型 (array<array< double >>)の列のデータの 1 つが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 を使用してクエリを実行できるため、データ (double の配列の配列) がファイルに存在することに注意してください。