Python:OSError:[Errno 22]尝试使用 pandas.read_parquert 时参数无效

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

我有这个简单的代码

import pandas as pd

file = pd.read_parquet('file.rot',engine='fastparquet')

file.rot 是一个有 5 列的数据表(浮点数)

当我运行它时出现的错误是这样的

  File ~\miniconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
    exec(code, globals, locals)

  File c:\users\josé\onedrive\ambiente de trabalho\draft.py:10
    file = pd.read_parquet('file.rot',sep='=',engine='fastparquet')

  File ~\miniconda3\Lib\site-packages\pandas\io\parquet.py:667 in read_parquet
    return impl.read(

  File ~\miniconda3\Lib\site-packages\pandas\io\parquet.py:402 in read
    parquet_file = self.api.ParquetFile(path, **parquet_kwargs)

  File ~\miniconda3\Lib\site-packages\fastparquet\api.py:135 in __init__
    self._parse_header(fn, verify)

  File ~\miniconda3\Lib\site-packages\fastparquet\api.py:215 in _parse_header
    f.seek(-(head_size + 8), 2)

OSError: [Errno 22] Invalid argument

我不知道我做错了什么,或者我在 miniconda 上安装 fastparquet 时是否做错了什么

python pandas spyder fastparquet
1个回答
-1
投票

因此,您在尝试使用 pandas 和 fastparquet 引擎读取 Parquet 文件时似乎遇到了障碍。弹出的错误消息指示 OSError 并显示消息“[Errno 22] Invalid argument”。

让我们正面解决错误消息。此类错误通常表明文件的访问或读取方式出现问题。在您的情况下,它可能与文件路径或文件的结构有关。

现在,深入研究您的代码,您似乎正在尝试读取名为“file.rot”的 Parquet 文件,并将分隔符设置为“=”,这可能是问题的根本原因。 Parquet 文件通常不像 CSV 文件那样使用分隔符;它们以柱状格式存储,在文件本身中维护其数据结构。

因此,这里有一个建议:让我们尝试在不指定分隔符的情况下读取文件。以下是调整代码的方法:

在此代码片段中,我在 read_parquet 函数调用中省略了“sep”参数,因为 Parquet 文件通常不需要指定分隔符。但是,如果您的文件确实需要需要分隔符的特定结构,请确保准确指定它。

尝试一下,如果它对您有用,或者是否出现任何其他问题,请告诉我!

    import pandas as pd

try:
    file = pd.read_parquet('file.rot', engine='fastparquet')
    # If you're using separator, please make sure it's necessary and appropriate
    # file = pd.read_parquet('file.rot', sep=' ', engine='fastparquet')
    
    # Now you can work with your 'file' DataFrame
    print(file.head())  # Just a sample to see if it's loaded correctly
except Exception as e:
    print("Error:", e)  # Print any error that might occur
© www.soinside.com 2019 - 2024. All rights reserved.