为了账号安全,请及时绑定邮箱和手机立即绑定

将包括工作表在内的多个exce文件导入1个excel文件

将包括工作表在内的多个exce文件导入1个excel文件

牛魔王的故事 2023-05-16 15:00:02
我有 5 个 Excel 文件,每个文件包含 8 个工作表,每个工作表包含大约 30 行。所以这意味着 1 个文件总共有 30 x 8 = 240 行。有没有我可以使用的快速技巧将所有这 5 个文件(包括工作表)合并到 1 个 Excel 文件中,总共 240 x 5 行 = 1200 行?这是我当前的代码:import osimport pandas as pdfiles = os.listdir('c:\data\KM\Desktop\my_folder')  os.chdir(r'c:\data\KM\Desktop\my_folder')df = pd.DataFrame()for file in files:    if file.endswith('.xlsx'):        df = df.append(pd.read_excel(file))df.head() df.to_excel('all_files.xlsx')  现在有了这段代码我有两个问题:从所有文件中,我只得到第一张纸。所以它总共合并了 8 张而不是 40 (8x5) :(对于每个文件,它还复制列标题,这只需要为第一个文件完成。所有文件和工作表都具有相同的列名。感谢大家的帮助。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

对所有工作表使用read_excelwith sheet_name=None,将 DataFrame 列表连接在一起concat,最后再次将其用于一个大的 DataFrame:

import glob


files = glob.glob(r'c:/data/KM/Desktop/my_folder/*.xlsx') 

dfs = (pd.concat(pd.read_excel(fp, sheet_name=None)) for fp in files)

dfbig = pd.concat(dfs, ignore_index=True)

编辑:要删除最后一个工作表名称,请将 orderdict 转换为 DataFrame 列表并通过索引删除最后一个:


files = glob.glob(r'D:/Dropbox/work-joy/so/files/*.xlsx')

dfs = (pd.concat([v for k, v in pd.read_excel(fp, sheet_name=None).items()][:-1]) 

                 for fp in files)

df = pd.concat(dfs, ignore_index=True)


查看完整回答
反对 回复 2023-05-16
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信