New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ExcelFile.parse() and pd.read_xlsx() have different behavior for "sheetname" argument #20920

deflatSOCO opened this Issue May 2, 2018 · 1 comment


None yet
2 participants

deflatSOCO commented May 2, 2018

Code Sample, a copy-pastable example if possible

  • pd.read_excel()
>>> import pandas as pd
>>> pd.read_excel('sampledata.xlsx', sheet_name='Sheet2')
      a   b       c
0  this  is  sheet2
>>> pd.read_excel('sampledata.xlsx', sheetname='Sheet2')
/Users/<myname>/.pyenv/versions/miniconda3-latest/envs/py36/envs/py36/lib/python3.6/site-packages/pandas/util/ FutureWarning: The `sheetname` keyword is deprecated, use `sheet_name` instead
  return func(*args, **kwargs)
      a   b       c
0  this  is  sheet2
  • ExcelFile.parse()
>>> import pandas as pd
>>> xlsx_file=pd.ExcelFile('sampledata.xlsx')
>>> xlsx_file.sheet_names
['Sheet1', 'Sheet2', 'Sheet3']
>>> xlsx_file.parse(sheet_name='Sheet2')
      a   b       c
0  this  is  sheet2
>>> xlsx_file.parse(sheetname='Sheet2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/<myname>/.pyenv/versions/miniconda3-latest/envs/py36/envs/py36/lib/python3.6/site-packages/pandas/io/", line 327, in parse
TypeError: _parse_excel() got multiple values for keyword argument 'sheetname'

Problem description

  • The document says ExcelFile.parse() is "Equivalent to read_excel(ExcelFile, ...)", but when using argument sheetname,which is deprecated, these two gives different results.
    • pd.read_excel() works with FutureWarning, but ExcelFile.parse() gives TypeError instead.

Expected Output

ExcelFile.parse() should raise FutureWarning and use the value of sheetname as that of sheet_name

Output of pd.show_versions()


commit: None
python-bits: 64
OS: Darwin
OS-release: 17.5.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None

pandas: 0.22.0
pytest: 3.3.2
pip: 9.0.1
setuptools: 38.4.0
Cython: 0.27.3
numpy: 1.14.0
scipy: 1.0.0
pyarrow: None
xarray: None
IPython: 6.2.1
sphinx: 1.6.6
patsy: 0.5.0
dateutil: 2.6.1
pytz: 2017.3
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: None
matplotlib: 2.1.2
openpyxl: 2.4.10
xlrd: 1.1.0
xlwt: 1.2.0
xlsxwriter: 1.0.2
lxml: 4.1.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.1
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None


This comment has been minimized.


jreback commented May 2, 2018

you are welcome to submit a fix to this, though sheetname is going to be removed in the next version.

@jreback jreback added this to the Next Major Release milestone May 2, 2018

@jreback jreback modified the milestones: Next Major Release, 0.23.0 May 3, 2018

deflatSOCO added a commit to deflatSOCO/pandas that referenced this issue May 4, 2018

CLN: removed error/warning raising process from read_excel
* removed error/warning raising process from read_excel
* changed calling method from ExcelFile._parse_excel to ExcelFile.parse,
which calls _parse_excel and raises the same error/warning

Related issue: pandas-dev#20920
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment