Python: OSError: [Errno 22] Неверный аргумент при попытке использовать pandas.read_parquert

У меня есть этот простой код

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

Я не знаю, что я делаю не так, или я сделал что-то не так при установке fastparquet на миниконду

да, я попробовал еще раз, и появляется та же ошибка. Также пробовал установить и использовать вместо pyarrow (используя вместо file.parquet) и пишет, что файл либо поврежден, либо не является файлом паркета

Jose Rodrigues 10.04.2024 18:51

Что такое файл .rot?

mdurant 10.04.2024 18:54

это просто текстовый файл с завершением .rot (навязанный моим профессором, но я думаю, что это помогает различать файлы с тем же именем)

Jose Rodrigues 10.04.2024 18:59

Ваш файл конечно не паркетный.

BigBen 10.04.2024 19:06

что, если я сохраню файл как file.parquet? Конвертируется ли он в файл паркета?

Jose Rodrigues 10.04.2024 19:13

Нет, изменение расширения файла не делает его волшебным образом файлом паркета.

BigBen 10.04.2024 19:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
239
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для тех, кому интересно, вот что на самом деле происходит, когда fastparquet пытается прочитать файл как паркет. Согласно спецификации паркета, последние четыре байта файла должны быть b"PAR1", а четыре байта перед ними дают размер нижнего колонтитула в байтах. Вы можете нажать verify=True, чтобы проверить магические байты:

>>> fastparquet.ParquetFile('file.rot', engine='fastparquet', verify=True)
ParquetException: File parse failed

Это не значение по умолчанию и не делается пандами. Таким образом, fastparquet принял размер, заданный четырьмя предыдущими байтами, возможно, это какое-то случайное большое число, и поэтому seek() в файле не работает, поскольку предполагаемое местоположение находится за пределами файла.

Другие вопросы по теме