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

Closed
deflatSOCO opened this Issue May 2, 2018 · 1 comment

Comments

Projects
None yet
2 participants
@deflatSOCO
Contributor

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/_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

This comment has been minimized.

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 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