According to pandas doc for 0.21+, pandas.read_excel has a parameter sheet_name that allows specifying which sheet is read. But when I am trying to read the second sheet from an excel file, no matter how I set the parameter (sheet_name = 1, sheet_name = 'Sheet2'), the dataframe always shows the first sheet, and passing a list of indices (sheet_name = [0, 1]) does not return a dictionary of dataframes but still the first sheet. What might be the problem here?
Asked
Active
Viewed 5.9k times
14
smci
- 29,564
- 18
- 109
- 144
user5409172
- 393
- 1
- 4
- 10
-
5I had the same problem which was resolved after upgrading to 0.21 – ayhan Dec 26 '17 at 08:30
4 Answers
23
It looks like you're using the old version of Python. So try to change your code
df = pd.read_excel(file_with_data, sheetname=sheet_with_data)
It should work properly.
Sergey Solod
- 635
- 6
- 12
-
11check your version of pandas `pd.__version__` If .21 or newer, use `sheet_name` keyword parameter. If older version, use `sheetname` [pandas.read_excel](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html) – datalifenyc Dec 30 '18 at 17:49
7
You can try to use pd.ExcelFile:
xls = pd.ExcelFile('path_to_file.xls')
df1 = pd.read_excel(xls, 'Sheet1')
df2 = pd.read_excel(xls, 'Sheet2')
whiplassh
- 144
- 1
- 7
1
This works:
df = pd.read_excel(open(file_path_name), 'rb'), sheetname = sheet_name)
file_path_name = your file
sheet_name = your sheet name
This does not for me:
df = pd.read_excel(open(file_path_name), 'rb'), sheet_name = sheet_name)
Gave me only the first sheet, no matter how I defined sheet_name.
--> it is an known error: https://github.com/pandas-dev/pandas/issues/17107
Alex Riabov
- 7,639
- 5
- 41
- 47
Torolito
- 13
- 5
0
Try at Terminal, type the following first, then re-run your program: pip install xlrd
Lee Li Fong
- 254
- 1
- 6