Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将多个excel xlsm文件与多个工作表合并到一个数据集中?_Python_Excel_Pandas_Merge - Fatal编程技术网

Python 如何将多个excel xlsm文件与多个工作表合并到一个数据集中?

Python 如何将多个excel xlsm文件与多个工作表合并到一个数据集中?,python,excel,pandas,merge,Python,Excel,Pandas,Merge,我不熟悉编码。我正在尝试将3个不同的xlsm文件合并为一个。这3个文件有一个选项卡,名称相同“SUmmary”,这是我想在一个数据帧中添加的工作表,但在创建数据帧时,我遇到了一个无法修复的错误 我所尝试的: <for f in files_xlsm: data= pd.read_excel(f, sheet_name = 'Summary') df = df.append(data)> 错误: <IOErrorTraceback (most recent call las

我不熟悉编码。我正在尝试将3个不同的xlsm文件合并为一个。这3个文件有一个选项卡,名称相同“SUmmary”,这是我想在一个数据帧中添加的工作表,但在创建数据帧时,我遇到了一个无法修复的错误

我所尝试的:

<for f in files_xlsm:
data= pd.read_excel(f, sheet_name = 'Summary')
df = df.append(data)>

错误:

<IOErrorTraceback (most recent call last)
<ipython-input-63-fcda0775e736> in <module>()
  1 #Loop over files to append to empty dataframe
  2 for f in files_xlsm:
----> 3     data= pd.read_excel(f, sheet_name = 'Summary')
  4     df = df.append(data)

IOError: [Errno 2] No such file or directory: 'FIM 2.0 IP Review FP Baby - Copy.xlsm'>
3 data=pd.read\u excel(f,工作表名称='Summary')
4 df=df.append(数据)
IOError:[Errno 2]没有这样的文件或目录:'FIM 2.0 IP Review FP Baby-Copy.xlsm'>

您需要将每个文件作为数据帧加载,然后使用pandas concat

import pandas as pd
for f in files_xlsm:
    if files_xlsm.index(f) == 0:
        df = pd.read_excel(f, sheet_name = 'Summary')
    else:
        merge_df = pd.read_excel(f, sheet_name = 'Summary')
        df = pd.concat([df, merge_df])

但是堆栈跟踪显示,您的错误实际上是脚本找不到文件“FIM 2.0 IP Review FP Baby-Copy.xlsm”,因此请确保在保存该脚本的同一目录中运行该脚本

您需要将每个文件作为数据帧加载,然后使用concat

import pandas as pd
for f in files_xlsm:
    if files_xlsm.index(f) == 0:
        df = pd.read_excel(f, sheet_name = 'Summary')
    else:
        merge_df = pd.read_excel(f, sheet_name = 'Summary')
        df = pd.concat([df, merge_df])

但是堆栈跟踪显示,您的错误实际上是脚本找不到文件“FIM 2.0 IP Review FP Baby-Copy.xlsm”,因此请确保在保存该脚本的同一目录中运行该脚本

这也可以完成这项工作:

import pandas as pd
import glob
df = pd.concat([pd.read_excel(f, sheet_name = 'Summary') for f in glob.glob('path/*.xlsx')],  ignore_index = True)

这也可以完成这项工作:

import pandas as pd
import glob
df = pd.concat([pd.read_excel(f, sheet_name = 'Summary') for f in glob.glob('path/*.xlsx')],  ignore_index = True)