Skip to content

BUG: read_excel: ValueError: Length of new names must be 1, got 2 #66372

Description

@kuraga

Pandas version checks

  • I have checked that this issue has not already been reported.

  • I have confirmed this bug exists on the latest version of pandas.

  • I have confirmed this bug exists on the main branch of pandas.

(Part of #34766.)

test.csv

test.xlsx

Image

Reproducible Example

import pandas as pd

df1 = pd.read_csv('test.csv', header=[0,1], index_col=0)
print(df1)

df2 = pd.read_excel('test.xlsx', header=[0,1], index_col=0, engine='openpyxl')
print(df2)

assert df1.equals(df2)

Issue Description

Empty DataFrame
Columns: []
Index: []
Traceback (most recent call last):
  File "<...>/venv/demo_suite/issue2/test.py", line 6, in <module>
    df2 = pd.read_excel('test.xlsx', header=[0,1], index_col=0, engine='openpyxl')
  File "<...>/venv/lib/python3.13/site-packages/pandas/io/excel/_base.py", line 494, in read_excel
    data = io.parse(
        sheet_name=sheet_name,
    ...<20 lines>...
        dtype_backend=dtype_backend,
    )
  File "<...>/venv/lib/python3.13/site-packages/pandas/io/excel/_base.py", line 1780, in parse
    return self._reader.parse(
           ~~~~~~~~~~~~~~~~~~^
        sheet_name=sheet_name,
        ^^^^^^^^^^^^^^^^^^^^^^
    ...<16 lines>...
        **kwds,
        ^^^^^^^
    )
    ^
  File "<...>/venv/lib/python3.13/site-packages/pandas/io/excel/_base.py", line 768, in parse
    output = self._parse_sheet(
        data=data,
    ...<19 lines>...
        **kwds,
    )
  File "<...>/venv/lib/python3.13/site-packages/pandas/io/excel/_base.py", line 950, in _parse_sheet
    raise err
  File "<...>/venv/lib/python3.13/site-packages/pandas/io/excel/_base.py", line 940, in _parse_sheet
    output[asheetname].columns = output[asheetname].columns.set_names(
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        header_names
        ^^^^^^^^^^^^
    )
    ^
  File "<...>/venv/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 2051, in set_names
    idx._set_names(names, level=level)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "<...>/venv/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 1938, in _set_names
    raise ValueError(f"Length of new names must be 1, got {len(values)}")
ValueError: Length of new names must be 1, got 2 (sheet: 0)

Expected Behavior

No errors.

Installed Versions

Details

INSTALLED VERSIONS

commit : 72f2fea
python : 3.13.14
python-bits : 64
OS : Linux
OS-release : 6.18.33-calculate
Version : #1 SMP PREEMPT_DYNAMIC Tue Jun 9 10:00:56 UTC 2026
machine : x86_64
processor : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
byteorder : little
LC_ALL : None
LANG : ru_RU.UTF-8
LOCALE : ru_RU.UTF-8

pandas : 3.0.3
numpy : 2.5.1
dateutil : 2.9.0.post0
pip : 26.1.2
Cython : None
sphinx : None
IPython : None
adbc-driver-postgresql: None
adbc-driver-sqlite : None
bs4 : None
bottleneck : None
fastparquet : None
fsspec : None
html5lib : None
hypothesis : None
gcsfs : None
jinja2 : None
lxml.etree : None
matplotlib : None
numba : None
numexpr : None
odfpy : None
openpyxl : 3.1.5
psycopg2 : None
pymysql : None
pyarrow : None
pyiceberg : None
pyreadstat : None
pytest : None
python-calamine : None
pytz : None
pyxlsb : None
s3fs : None
scipy : None
sqlalchemy : None
tables : None
tabulate : None
xarray : None
xlrd : None
xlsxwriter : None
zstandard : None
qtpy : None
pyqt5 : None

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions