我有这个简单的代码
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 时是否做错了什么
因此,您在尝试使用 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