При использовании ExcelFile () я получаю ValueError: Неверный путь к файлу или тип буфера объекта: - PullRequest
0 голосов
/ 11 ноября 2019

Вот код, который я попробовал. Я пытаюсь прочитать листы, присутствующие в файле Excel, и, следовательно, пробовал ExcelFile (), однако не уверен, почему появляется следующая ошибка.

# Import pandas
import pandas as pd
# Assign spreadsheet filename: file
xls = pd.read_excel('battledeath.xlsx')
# Load spreadsheet: xls
xls = pd.ExcelFile(pd.read_excel('battledeath.xls'))

, и вижу эту ошибку:

ValueError                                Traceback (most recent call last)
<ipython-input-1-c639baabe58f> in <module>
      7 
      8 # Load spreadsheet: xls
----> 9 xls = pd.ExcelFile(pd.read_excel('battledeath.xls'))
     10 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\excel.py in __init__(self, io, **kwds)
    374             io = _urlopen(self._io)
    375         elif not isinstance(self.io, (ExcelFile, xlrd.Book)):
--> 376             io, _, _, _ = get_filepath_or_buffer(self._io)
    377 
    378         if engine == 'xlrd' and isinstance(io, xlrd.Book):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\common.py in get_filepath_or_buffer(filepath_or_buffer, encoding, compression, mode)
    216     if not is_file_like(filepath_or_buffer):
    217         msg = "Invalid file path or buffer object type: {_type}"
--> 218         raise ValueError(msg.format(_type=type(filepath_or_buffer)))
    219 
    220     return filepath_or_buffer, None, compression, False

ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>

1 Ответ

0 голосов
/ 11 ноября 2019

Я думаю, что вы, возможно, путаетесь в различиях между read_excel и ExcelFile, в общем, одна из них - функция, которая, между прочим, создаст для вас экземпляр ExcelFile, если необходимо, а другая -класс, но, честно говоря, вам не нужно особо беспокоиться об этом.

В итоге, ошибка, которую вы получаете, это именно то, что написано на банке, ExcelFile сбит с толку, почему выпередают фрейм данных его конструктору. Чтобы решить вашу проблему, просто используйте

xls = pd.read_excel('battledeath.xlsx')

, и теперь xls - это фрейм данных, содержащий ваши данные. Также, просто совет, прочитайте https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...