【发布时间】:2019-09-25 17:32:54
【问题描述】:
假设我有一个文件夹,其中包含多个扩展名为 xlsx 或 xls 的 excel 文件,它们共享相同的标题列 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])
【问题讨论】:
标签: python pandas dataframe concatenation