Перебирайте файлы и листы Excel и объединяйте в Python - PullRequest
0 голосов
/ 08 мая 2019

Скажем, у меня есть папка с несколькими файлами Excel с расширением xlsx или xls, они имеют один и тот же столбец заголовка a, b, c, d, e, за исключением некоторого пустого листа в нескольких файлах.

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

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

Мне нужно объединить два блока кода ниже в один.Спасибо за вашу помощь.

import pandas as pd
import numpy as np
import glob

path = os.getcwd()
files = os.listdir(path)
files

df = pd.DataFrame()

# method 1

excel_files = [f for f in files if f[-4:] == 'xlsx' or f[-3:] == 'xls']
excel_files

for f in excel_files:
    data = pd.read_excel(f)
    df = df.append(data)

# method 2

for f in glob.glob("*.xlsx" or "*.xls"):
    data = pd.read_excel(f)
    df = df.append(data, ignore_index=True)

# save the data frame
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer, 'sheet1')
writer.save()

За один файл для объединения нескольких листов:

file = pd.ExcelFile('file.xlsx')

names = file.sheet_names  # read all sheet names

df = pd.concat([file.parse(name) for name in names])

1 Ответ

1 голос
/ 08 мая 2019
import pandas as pd

path = os.getcwd()
files = os.listdir(path)
files

excel_files = [file for file in files if '.xls' in file]
excel_files

def create_df_from_excel(file_name):
    file = pd.ExcelFile(file_name)

    names = file.sheet_names

    return pd.concat([file.parse(name) for name in names])

df = pd.concat(
    [create_df_from_excel(xl) for xl in excel_files]
)

# save the data frame
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer, 'sheet1')
writer.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...