Создание базы данных Pandas из нескольких файлов шаблонов Excel - Python 3 - PullRequest
0 голосов
/ 27 ноября 2018

Мой код ниже работает, но я новичок в python, и мне кажется, что должен быть намного лучший способ ...

Компании заполняют шаблон Excel с некоторыми статистическими данными о своей рабочей силе, поэтому файлыкаждый раз в одном и том же формате.

Существует около 150 отдельных файлов в формате Excel (формат .xls, я не уверен, почему, но я не участвовал в их отправке!).Необходимые данные хранятся в отдельных ячейках:

Ячейка C6 = название компании, Ячейка C13 = Количество заданий и т. Д. И т. Д.

Я хочу создать строку для каждого файла,так что мои заголовки будут

имя файла |имя |рабочие места |и т. д. |и т. д.

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

all_files = []
all_name = []
all_jobs_current = []
#etc (approx 10 more)

for f in glob.glob('**/*.xls'):
    CF = xlrd.open_workbook(f)
    sheet = CF.sheet_by_name('Confirmation form')
    name = sheet.cell(5,2).value #cell C6
    jobs_current = sheet.cell(12,2).value #cell C13
    #etc

    all_files.append(f)
    all_name.append(name)
    all_jobs_current.append(jobs_current)
    #etc

d = {'Filename': all_files,
     'Name': all_name,
     'Jobs': all_jobs_current}
     #etc

df = pd.DataFrame(d)

РЕДАКТИРОВАТЬ 1. Я пыталсяобновить после обратной связи (я принимаю, что я, вероятно, написал это неправильно), но я получаю следующую ошибку: не подлежащий обработке тип: список

dcell = {'Name': (5,2),
         'Jobs': (12,2)}
dlist = {k: [] for k in list(dcell.keys())}

for f in glob.glob('**/*.xls'):
    for k, v in dlist.items():
        CF = xlrd.open_workbook(f)
        sheet = CF.sheet_by_name('Confirmation form')
        dlist[v].append(sheet.cell(*dcell[k]).value)

1 Ответ

0 голосов
/ 27 ноября 2018

Похоже на работу со словарем:

dcell = {'name': (5,2), 'jobs_current': (12,2) ... }
dlist = {k: [] for k in list(dcell.keys())}

for k, v in dlist.items():
    dlist[k].append(sheet.cell(*dcell[k]).value)

Вам все равно потребуется перебрать файл и создать этот список файлов самостоятельно, но затем вы можете объединить этот список в dlist.

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