Python / Pandas: перебирать файлы Excel и извлекать информацию - PullRequest
1 голос
/ 13 марта 2020

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

У меня есть несколько книг Excel, каждая из которых содержит несколько листов. Я хотел бы перебрать каждую рабочую книгу и извлечь информацию из названия листа «3. Цены». Этот лист доступен во всех файлах. Куски информации, которые будут извлечены из этого листа в каждом файле, - это два. Первый всегда находится в диапазоне ячеек E13: H13, а второй из ячеек F19, I19 и K19.

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

Так что-то вроде этого:

enter image description here

Что я ' попробовал до сих пор, без удачи

from openpyxl import load_workbook
import os
import pandas as pd

directory = os.listdir('C:\\User\\files')

for file in directory:
    if os.path.isfile(file):

        file_name = file[0:3]
        workbook = load_workbook(filename = file)
        sheet = workbook['3. Prices']
        e13 = sheet['E13'].value
        f13 = sheet['F13'].value
        g13 = sheet['G13'].value
        h13 = sheet['H13'].value
        f19 = sheet['F19'].value
        i19 = sheet['I19'].value
        k19 = sheet['K19'].value

        df = df.append(pd.DataFrame({
                "File_name":file_name, 
                "E13":e13, "F13":f13, "G13":g13,"H13":h13,
                "F19":f19,"I19":i19,"K19":i19,
                }, index=[0]))

1 Ответ

0 голосов
/ 17 марта 2020

Я понял это. Мне не хватало двух элементов: 1) изменение текущего рабочего каталога, чтобы он соответствовал тому, что находится в переменной 'directory', и 2) определение кадра данных в начале

from openpyxl import load_workbook
import os
import pandas as pd

os.chdir('C:\\User\\files') 
directory = os.listdir('C:\\User\\files')

df=pd.DataFrame()    

for file in directory:
    if os.path.isfile(file):

        file_name = file[0:3]
        workbook = load_workbook(filename = file, data_only=True)
        sheet = workbook['3. Prices']
        e13 = sheet['E13'].value
        f13 = sheet['F13'].value
        g13 = sheet['G13'].value
        h13 = sheet['H13'].value
        f19 = sheet['F19'].value
        i19 = sheet['I19'].value
        k19 = sheet['K19'].value

        df = df.append(pd.DataFrame({
                "File_name":file_name, 
                "E13":e13, "F13":f13, "G13":g13,"H13":h13,
                "F19":f19,"I19":i19,"K19":i19,
                }, index=[0]))
...