将 parquet 文件中的读取列表发出到数据框中,在 MacOS 上显示为“无”,但适用于 Windows

问题描述 投票:0回答:1

我有许多带有定价数据的镶木地板文件,出价和要价以及尺寸存储为浮点值列表 例如

                                                bidprices  \
0       [4.51088, 4.51079, 4.51065, 4.51051, 4.51011, ...   
1       [4.51088, 4.51079, 4.51065, 4.51051, 4.51011, ...   
2                    [4.51073, 4.51052, 4.51029, 4.51002]   
3                             [4.51049, 4.51049, 4.51039]   
4                                      [4.51049, 4.51039]   
...                                                   ...      
633621                [4.52003, 4.52001, 4.51988, 4.5195]   

                                                 bidsizes  \
0       [1000000, 5000000, 10000000, 20000000, 4000000...   
1       [1000000, 5000000, 10000000, 20000000, 4000000...   
2                   [1000000, 4000000, 5000000, 10000000]   
3                              [500000, 1000000, 3000000]   
4                                      [1000000, 3000000]   
...                                                   ...      
633621                 [500000, 500000, 2000000, 7000000]   

我正在使用

boto3
连接到 AWS s3 存储桶并将文件读入数据帧。不存在连接或权限问题,代码已经过测试并且可以在 Windows 计算机上运行。

session = boto3.Session(profile_name='aws-profile')
                s3 = session.client('s3')
                for key in key_name:
                    response = s3.get_object(Bucket=bucket, Key= key + '/' + self.symbol + '_' + x + '.parquet')
                    content = response['Body'].read()
                    file_obj = io.BytesIO(content)
                    df = pd.read_parquet(file_obj)
                    files.append(df)

但是,当我从我的机器(MacOS Sequoia 版本 15.1 (24B83))python3 版本

Python 3.9.6
运行时,数据框会在列表应在的位置生成空列,当文件存储在本地时,也会发生同样的情况。

df.isnull().all()
给出

[1739342 rows x 11 columns]
time         False
sym          False
provider     False
valuedate    False
received     False
bid          False
ask          False
bidprices     True
bidsizes      True
askprices     True
asksizes      True
dtype: bool

我尝试更新 python 版本,检查权限并验证文件没有损坏。最奇怪的是,我在本地保存了一个文件,当读入 df 时,该文件不会丢失列表值,但与其他不起作用的本地文件相比,我看不到它的存储方式有任何差异。

我没有包含完整的代码,因为它似乎不是这里的原因,但如果有必要,我很乐意包含它。非常感谢任何帮助。

python-3.x list macos boto3 parquet
1个回答
0
投票

现在也有同样的问题。尝试使用不同的引擎。

fastparquet
对我不起作用,但
pyarrow
对我有用。

df = pd.read_parquet(file_obj, engine="pyarrow")
© www.soinside.com 2019 - 2024. All rights reserved.