Skip to content

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

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

Closed
deflatSOCO opened this issue May 2, 2018 · 1 comment · Fixed by #20938
Closed
Labels
API Design Deprecate Functionality to remove in pandas good first issue IO Excel read_excel, to_excel
Milestone

Comments

@deflatSOCO
Copy link
Contributor

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/_decorators.py:118: 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/excel.py", line 327, in parse
    **kwds)
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()

INSTALLED VERSIONS

commit: None
python: 3.6.4.final.0
python-bits: 64
OS: Darwin
OS-release: 17.5.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: ja_JP.UTF-8
LOCALE: ja_JP.UTF-8

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

@jreback
Copy link
Contributor

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 API Design IO Excel read_excel, to_excel Deprecate Functionality to remove in pandas labels May 2, 2018
@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
* 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
Labels
API Design Deprecate Functionality to remove in pandas good first issue IO Excel read_excel, to_excel
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants