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文件连接/合并为一个新的excel文件_Python_Excel - Fatal编程技术网

Python 将文件夹中的所有excel文件连接/合并为一个新的excel文件

Python 将文件夹中的所有excel文件连接/合并为一个新的excel文件,python,excel,Python,Excel,我正在尝试使用Python将同一文件夹中的许多excel文件合并成一个新文件。所有excel文件都包含时间序列数据,每个文件只有一个工作表,并且都具有相同的布局: Timestamp ----- Data Tag TS1 ----------------- ### TS2 ----------------- ### etc. The new combined sheet would look something like this:

我正在尝试使用Python将同一文件夹中的许多excel文件合并成一个新文件。所有excel文件都包含时间序列数据,每个文件只有一个工作表,并且都具有相同的布局:

Timestamp   -----  Data Tag

TS1       -----------------      ###

TS2        -----------------      ###

etc.

The new combined sheet would look something like this:

Timestamp ----- Data Tag 1-----Data Tag 2

TS1 ----------------- ###----------------###

TS2 ----------------- ###----------------###
等等

我试过几种不同的方法

方法1仅返回列表中最后一个文件中的列:

    import glob
    import pandas as pd
    
    all_data = pd.DataFrame()
    for f in glob.glob("*.xls"):
        print(f)
        df = pd.read_excel(f)
        all_data = pd.concat([df])
        all_data.to_excel('destination.xlsx')
        
    print("done")
而方法2只连接文件夹中的前两个文件。它还包括来自第二个excel文件的timestamp列,但当我让它为整个批次工作时,我正打算解决这个问题

    import glob
    import pandas as pd
    
    all_data = pd.DataFrame()
    for f in glob.glob("*.xls"):
        print(f)
        df = pd.read_excel(f)
        all_data = df.merge(df, left_index=True, right_index=True)
        all_data.to_excel('destination.xlsx')
        
    print("done")
我到处搜索,包括SO和其他地方,但我正在努力用上面指定的方法组合这些文件。追加很简单,但出于某种原因合并却不简单

如果有人能给我指出正确的方向,我将不胜感激

多谢各位

编辑:

根据AMC的评论,编辑代码以遍历文件。然而,现在,一个KeyError被传递,因为“Timestamp”不被识别,尽管不需要后缀

错误:

 File "C:\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1706, in _get_label_or_level_values
    raise KeyError(key)

KeyError: 'Timestamp'
导致错误的代码:

import os
import pandas as pd

rootdir = os.path.dirname(os.path.realpath(__file__))
files = os.listdir(rootdir)

df = pd.DataFrame()

for f in files:
    if f.endswith(".xls"):
        print(f)
        df = df.merge(pd.read_excel(f), suffixes=None, left_on='Timestamp', right_on='Timestamp')

df.to_excel('concat.xlsx')
    
print("done")

方法1只返回列表中最后一个文件中的列:这是因为每次迭代时都会覆盖该文件。而方法2只连接文件夹中的前两个文件。同样的问题。嘿@AMC,谢谢你的评论!我做了一些更改来迭代文件,但是代码现在抛出了一个错误,因为它似乎无法识别数据的timestamp列。如果我改为传递_left_index_uu=True和_right_index_uu=True,代码将编译并运行,但是只有列标签才能进入最终工作表。你对如何解决这个问题有什么建议吗?那完全是另一个问题,不是吗?