pandas.read_excel parameter "sheet_name" not working
Question:
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?
Answers:
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')
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.
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
Try at Terminal, type the following first, then re-run your program:
pip install xlrd
I also faced this problem until I found this solution:
rd=pd.read_excel(excel_file,sheet_name=['Sheet2']),
Here excel_file
means "file name".
The filename should be the full path to the file.
Make sure to use two backslashes (\
) instead of just one!
In my case, this works.
I would just use double quotes like this.
# Returns a DataFrame
pd.read_excel("path_to_file.xls", sheet_name="Sheet1")
pip install openpyxl
The above command worked for me.
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?
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')
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.
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
Try at Terminal, type the following first, then re-run your program:
pip install xlrd
I also faced this problem until I found this solution:
rd=pd.read_excel(excel_file,sheet_name=['Sheet2']),
Here excel_file
means "file name".
The filename should be the full path to the file.
Make sure to use two backslashes (\
) instead of just one!
In my case, this works.
I would just use double quotes like this.
# Returns a DataFrame
pd.read_excel("path_to_file.xls", sheet_name="Sheet1")
pip install openpyxl
The above command worked for me.