Python 将文件夹中的所有excel文件连接/合并为一个新的excel文件
我正在尝试使用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:
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,代码将编译并运行,但是只有列标签才能进入最终工作表。你对如何解决这个问题有什么建议吗?那完全是另一个问题,不是吗?