Te damos el hallazgo a esta preocupación, al menos eso deseamos. Si tienes dudas dínoslo, que sin dudas
Tratar pd.ExcelFile
:
xls = pd.ExcelFile('path_to_file.xls')
df1 = pd.read_excel(xls, 'Sheet1')
df2 = pd.read_excel(xls, 'Sheet2')
Como señaló @HaPsantran, todo el archivo de Excel se lee durante la ExcelFile()
llamada (no parece haber una forma de evitar esto). Esto simplemente le evita tener que leer el mismo archivo cada vez que desea acceder a una nueva hoja.
Tenga en cuenta que el sheet_name
argumento a pd.read_excel()
puede ser el nombre de la hoja (como arriba), un número entero que especifica el número de hoja (p. ej., 0, 1, etc.), una lista de nombres de hojas o índices, o None
. Si se proporciona una lista, devuelve un diccionario donde el keys son los nombres/índices de las hojas y los valores son los marcos de datos. El valor predeterminado es simplemente devolver la primera hoja (es decir, sheet_name=0
).
Si None
está especificado, todo se devuelven las hojas, como sheet_name:dataframe
diccionario.
Hay algunas opciones:
Lea todas las hojas directamente en un diccionario ordenado.
import pandas as pd
# for pandas version >= 0.21.0
sheet_to_df_map = pd.read_excel(file_name, sheet_name=None)
# for pandas version < 0.21.0
sheet_to_df_map = pd.read_excel(file_name, sheetname=None)
Lea la primera hoja directamente en el marco de datos
df = pd.read_excel('excel_file_path.xls')
# this will read the first sheet into df
Lea el archivo de Excel y obtenga una lista de hojas. Luego elige y carga las hojas.
xls = pd.ExcelFile('excel_file_path.xls')
# Now you can list all sheets in the file
xls.sheet_names
# ['house', 'house_extra', ...]
# to read just one sheet to dataframe:
df = pd.read_excel(file_name, sheetname="house")
Lee todas las hojas y guárdalas en un diccionario. Igual que el primero pero más explícito.
# to read all sheets to a map
sheet_to_df_map =
for sheet_name in xls.sheet_names:
sheet_to_df_map[sheet_name] = xls.parse(sheet_name)
# you can also use sheet_index [0,1,2..] instead of sheet name.
Gracias @ihightower por señalar la forma de leer todas las hojas y @toto_tico por señalar el problema de la versión.
nombre de la hoja: stringEn t, mixed lista de cadenas/ints, o Ninguno, por defecto 0 En desuso desde la versión 0.21.0: Use sheet_name en lugar de Source Link
También puede utilizar el índice de la hoja:
xls = pd.ExcelFile('path_to_file.xls')
sheet1 = xls.parse(0)
dará la primera hoja de trabajo. para la segunda hoja de trabajo:
sheet2 = xls.parse(1)