Как загрузить несколько файлов Excel с несколькими листами в один фрейм данных в Python - PullRequest
0 голосов
/ 25 марта 2019

Мы пытаемся создать автоматическую программу, которая может взять несколько файлов Excel с несколькими листами из папки и добавить их в один фрейм данных.

Наша проблема в том, что мы не совсем уверены, как это сделать, поэтому процесс становится максимально автоматическим.И так как листы различаются по именам, мы не можем указывать для них переменные.

Все файлы * .xlsx, и код должен загружать произвольное количество файлов.

Мы пробовали разные типы кодов, в основном с использованием панд, но мы можем 'кажется, добавить их в один фрейм данных.

import numpy as np
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("*.xlsx"):
    df = pd.read_excel(f)
    all_data = all_data.append(df, ignore_index=True)

# now save the data frame
writer = pd.ExcelWriter('output.xlsx')
all_data.to_excel(writer)
writer.save() 

sheet1 = xls.parse(0)

Мы ожидаем, что у нас будет один фрейм данных со всеми данными, чтобы мы могли использовать данные, извлекать различные функции и создавать статистику.

1 Ответ

0 голосов
/ 25 марта 2019

Документация pandas.read_excel гласит:

* имя_сталицы: str, int, list или None, по умолчанию 0 Строки используются для имен листов.Целые числа используются в позициях с нулевым индексомСписки строк / целых чисел используются для запроса нескольких листов.Укажите «Нет», чтобы получить все листы.

Доступные случаи:

  • По умолчанию 0: 1-й лист как DataFrame
  • 1: 2-й лист как DataFrame
  • «Sheet1»: загрузить лист с именем «Sheet1»
  • [0, 1, «Sheet5»]: загрузить первый, второй и лист с именем «Sheet5» в ​​качестве указания для DataFrame. Нет: все листы.*

Я бы предложил попробовать последний вариант: pd.read_excel (f, sheet_name = None).В противном случае вы можете захотеть создать цикл и передать индексы по сравнению с реальными именами листов, так что вам не нужно предварительно знать файлы .xlsx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...