[Python] Getting ParserError for "usecols" of pandas.read_excel

Discussão em 'Python' iniciado por Stack, Maio 19, 2025.

  1. Stack

    Stack Membro Participativo

    When I run this command

    df_Future = pd.read_excel(ExcelUI,
    sheet_name = 'Future',
    usecols = 'A:AS')
    df_Future = df_Future[df_Future['Location'].notna()]


    I get this error in version 3.11.7 which I did not get in version 3.7.6. All I am trying to do is read in columns from one tab in and Excel file. I am doing this numerous times from other Excel files and it seems to work on those.

    ParserError Traceback (most recent call last)
    Cell In[10], line 1
    ----> 1 df_Future = pd.read_excel(ExcelUI,
    2 sheet_name = 'Future',
    3 usecols = 'A:AS')
    4 df_Future = df_Future[df_Future['Location'].notna()]

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\excel\_base.py:517, in read_excel(io, sheet_name, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, date_format, thousands, decimal, comment, skipfooter, storage_options, dtype_backend, engine_kwargs)
    511 raise ValueError(
    512 "Engine should not be specified when passing "
    513 "an ExcelFile - ExcelFile already has the engine set"
    514 )
    516 try:
    --> 517 data = io.parse(
    518 sheet_name=sheet_name,
    519 header=header,
    520 names=names,
    521 index_col=index_col,
    522 usecols=usecols,
    523 dtype=dtype,
    524 converters=converters,
    525 true_values=true_values,
    526 false_values=false_values,
    527 skiprows=skiprows,
    528 nrows=nrows,
    529 na_values=na_values,
    530 keep_default_na=keep_default_na,
    531 na_filter=na_filter,
    532 verbose=verbose,
    533 parse_dates=parse_dates,
    534 date_parser=date_parser,
    535 date_format=date_format,
    536 thousands=thousands,
    537 decimal=decimal,
    538 comment=comment,
    539 skipfooter=skipfooter,
    540 dtype_backend=dtype_backend,
    541 )
    542 finally:
    543 # make sure to close opened file handles
    544 if should_close:

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\excel\_base.py:1629, in ExcelFile.parse(self, sheet_name, header, names, index_col, usecols, converters, true_values, false_values, skiprows, nrows, na_values, parse_dates, date_parser, date_format, thousands, comment, skipfooter, dtype_backend, **kwds)
    1589 def parse(
    1590 self,
    1591 sheet_name: str | int | list[int] | list[str] | None = 0,
    (...)
    1609 **kwds,
    1610 ) -> DataFrame | dict[str, DataFrame] | dict[int, DataFrame]:
    1611 """
    1612 Parse specified sheet(s) into a DataFrame.
    1613
    (...)
    1627 >>> file.parse() # doctest: +SKIP
    1628 """
    -> 1629 return self._reader.parse(
    1630 sheet_name=sheet_name,
    1631 header=header,
    1632 names=names,
    1633 index_col=index_col,
    1634 usecols=usecols,
    1635 converters=converters,
    1636 true_values=true_values,
    1637 false_values=false_values,
    1638 skiprows=skiprows,
    1639 nrows=nrows,
    1640 na_values=na_values,
    1641 parse_dates=parse_dates,
    1642 date_parser=date_parser,
    1643 date_format=date_format,
    1644 thousands=thousands,
    1645 comment=comment,
    1646 skipfooter=skipfooter,
    1647 dtype_backend=dtype_backend,
    1648 **kwds,
    1649 )


    Im breaking up the error because it keeps asking me to add more details

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\excel\_base.py:931, in BaseExcelReader.parse(self, sheet_name, header, names, index_col, usecols, dtype, true_values, false_values, skiprows, nrows, na_values, verbose, parse_dates, date_parser, date_format, thousands, decimal, comment, skipfooter, dtype_backend, **kwds)
    929 except Exception as err:
    930 err.args = (f"{err.args[0]} (sheet: {asheetname})", *err.args[1:])
    --> 931 raise err
    933 if last_sheetname is None:
    934 raise ValueError("Sheet name is an empty list")

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\excel\_base.py:893, in BaseExcelReader.parse(self, sheet_name, header, names, index_col, usecols, dtype, true_values, false_values, skiprows, nrows, na_values, verbose, parse_dates, date_parser, date_format, thousands, decimal, comment, skipfooter, dtype_backend, **kwds)
    891 # GH 12292 : error when read one empty column from excel file
    892 try:
    --> 893 parser = TextParser(
    894 data,
    895 names=names,
    896 header=header,
    897 index_col=index_col,
    898 has_index_names=has_index_names,
    899 dtype=dtype,
    900 true_values=true_values,
    901 false_values=false_values,
    902 skiprows=skiprows,
    903 nrows=nrows,
    904 na_values=na_values,
    905 skip_blank_lines=False, # GH 39808
    906 parse_dates=parse_dates,
    907 date_parser=date_parser,
    908 date_format=date_format,
    909 thousands=thousands,
    910 decimal=decimal,
    911 comment=comment,
    912 skipfooter=skipfooter,
    913 usecols=usecols,
    914 dtype_backend=dtype_backend,
    915 **kwds,
    916 )
    918 output[asheetname] = parser.read(nrows=nrows)
    920 if header_names:


    Im breaking up the error because it keeps asking me to add more details

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\parsers\readers.py:1847, in TextParser(*args, **kwds)
    1792 """
    1793 Converts lists of lists/tuples into DataFrames with proper type inference
    1794 and optional (e.g. string to datetime) conversion. Also enables iterating
    (...)
    1844 .. versionchanged:: 1.2
    1845 """
    1846 kwds["engine"] = "python"
    -> 1847 return TextFileReader(*args, **kwds)

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\parsers\readers.py:1448, in TextFileReader.__init__(self, f, engine, **kwds)
    1445 self.options["has_index_names"] = kwds["has_index_names"]
    1447 self.handles: IOHandles | None = None
    -> 1448 self._engine = self._make_engine(f, self.engine)

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\parsers\readers.py:1723, in TextFileReader._make_engine(self, f, engine)
    1720 raise ValueError(msg)
    1722 try:
    -> 1723 return mapping[engine](f, **self.options)
    1724 except Exception:
    1725 if self.handles is not None:

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\parsers\python_parser.py:131, in PythonParser.__init__(self, f, **kwds)
    125 self._col_indices: list[int] | None = None
    126 columns: list[list[Scalar | None]]
    127 (
    128 columns,
    129 self.num_original_columns,
    130 self.unnamed_cols,
    --> 131 ) = self._infer_columns()
    133 # Now self.columns has the set of columns that we will process.
    134 # The original set is stored in self.original_columns.
    135 # error: Cannot determine type of 'index_names'
    136 (
    137 self.columns,
    138 self.index_names,
    (...)
    143 self.index_names, # type: ignore[has-type]
    144 )

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\parsers\python_parser.py:540, in PythonParser._infer_columns(self)
    538 columns = [names]
    539 else:
    --> 540 columns = self._handle_usecols(
    541 columns, columns[0], num_original_columns
    542 )
    543 else:
    544 ncols = len(self._header_line)

    File C:\ProgramData\anaconda3\Lib\site-packages\pandas\io\parsers\python_parser.py:615, in PythonParser._handle_usecols(self, columns, usecols_key, num_original_columns)
    611 missing_usecols = [
    612 col for col in self.usecols if col >= num_original_columns
    613 ]
    614 if missing_usecols:
    --> 615 raise ParserError(
    616 "Defining usecols without of bounds indices is not allowed. "
    617 f"{missing_usecols} are out of bounds.",
    618 )
    619 col_indices = self.usecols
    621 columns = [
    622 [n for i, n in enumerate(column) if i in col_indices]
    623 for column in columns
    624 ]

    ParserError: Defining usecols without of bounds indices is not allowed. [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44] are out of bounds. (sheet: Future)

    Continue reading...

Compartilhe esta Página