Как объединить несколько таблиц в книгах Excel в кадр данных pandas? - PullRequest
0 голосов
/ 31 августа 2018

У меня есть несколько папок и подпапок, содержащих книги Excel с несколькими вкладками. Как мне преобразовать всю информацию в 1-й панду?

Вот мой код:

from pathlib import Path
import os
import pandas as pd
import glob

p = Path(r'C:\Users\user1\Downloads\key_folder')

globbed_files = p.glob('**/**/*.xlsx')

df = []

for file in globbed_files:
    frame = pd.read_excel(file, sheet_name = None, ignore_index=True)
    frame['File Path'] = os.path.basename(file)
    df.append(frame)

# df = pd.concat([d.values() for d in df], axis = 0, ignore_index=True)

df = pd.concat(df, axis=0, ignore_index = True)

Это генерирует следующую ошибку: cannot concatenate object of type "<class 'collections.OrderedDict'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

Когда я запустил pd.DataFrame(df), я увидел, что каждая вкладка электронной таблицы Excel представляет собой отдельный столбец. Ячейки содержат данные и заголовки в текстовом виде, образуя действительно длинную строку.

Любая помощь приветствуется! Спасибо!

1 Ответ

0 голосов
/ 31 августа 2018

Вот окончательный код:

    from pathlib import Path
    import os
    import pandas as pd
    import glob
    import xlrd

    p = Path('path here')

    globbed_files = p.glob('**/**/*.xlsx')

    list_dfs = []
    dfs = []

    for file in globbed_files:
        xls = xlrd.open_workbook(file, on_demand=True)
        for sheet_name in xls.sheet_names():
            df = pd.read_excel(file,sheet_name)
            df['Sheet Name'] = sheet_name
            list_dfs.append(df)

    dfs = pd.concat(list_dfs,axis=0)

    dfs.to_excel('merged spreadsheet.xlsx')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...