Импортировать все листы в Excel в разных фреймах - PullRequest
0 голосов
/ 26 июня 2019

У меня есть Excel-файл со многими листами.Я хочу сохранить каждый лист в кадре данных.Например:

df1 = pd.read_excel('Test.XLS', sheet_name = 'sheet1', skiprows = 3)[:-1]
df2 = pd.read_excel('Test.XLS', sheet_name = 'sheet2', skiprows = 3)[:-1]
...
and so on...

Но я не хочу делать это вручную, вместо этого я хотел бы сделать это в цикле или что-то в этом роде

Ответы [ 4 ]

0 голосов
/ 26 июня 2019

Это будет работать по вашему требованию.

import pandas as pd
xls = pd.ExcelFile('read_sheets.xlsx')
sheets = xls.sheet_names # get the sheets from the excel file
sheet_names = list(sheets)#store the sheets names into list
for i in range(len(sheet_names)):
    globals()['df_'+sheet_names[i]] = pd.read_excel('read_sheets.xlsx', sheet_name = sheets[i])

df_Sheet1 - первый фрейм данных

df_Sheet2 - второй кадр данных

df_Sheet3 - третий фрейм данных и т. Д.

0 голосов
/ 26 июня 2019

Это прочитает все листы и поместит их в словарь (рабочую книгу), где ключ - это имя листа, а значение - это фрейм данных.

workbook = pd.read_excel('Test.XLS', sheet_name = None, skiprows = 3)
0 голосов
/ 26 июня 2019

RTFM!

Документ для read_excel говорит:

имя_сталицы: str, int, list или None, по умолчанию 0
...
Нет: все листы.

Вы можете просто сделать:

dfx = pd.read_excel('Test.XLS', sheet_name = None, skiprows = 3)

и вы получите словарь всех листов, проиндексированных по имени листа.

0 голосов
/ 26 июня 2019

Вы можете сохранить кадры данных в списке и циклически изменять количество листов. Например, если у вас есть 10 листов

df_list=[]

for i in range(1,11):
    df_list.append(pd.read_excel('Test.XLS', sheet_name = 'sheet'+str(i), skiprows = 3)[:-1])

В случае, если количество листов неизвестно, вы можете использовать попытку, кроме

df_list=[]
i = 1
while True:
    try:
        df_list.append(pd.read_excel('Test.XLS', sheet_name = 'sheet'+str(i), skiprows = 3)[:-1])
        i+=1
    except:
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...