当前位置: 代码迷 >> python >> 串联Excel文件,使用文件名作为引发错误的索引
  详细解决方案

串联Excel文件,使用文件名作为引发错误的索引

热度:99   发布时间:2023-07-14 08:58:54.0

我大约有20个XLSX文件,范围从4到10 mb。

我想在这些xlsx文件中抓取一张纸并将它们合并为一个文件。

每个xlsx文件以连续的星期顺序命名,而我尝试解析的工作表没有日期,因此我使用file_name作为索引,并将对星期日期进行反向工程。

我正在使用以下代码,我经常使用这些代码将多个文件合并为一个df。 我还使用basename添加名称,但出现以下错误。

ValueError: Length mismatch: Expected axis has 461 elements, new values have 457 elements


import pandas as pd
from os.path import basename
import os
import glob
path = os.getcwd()
allFiles = glob.glob(path + "/*.xlsx")

    frame = pd.DataFrame()
    master_list = []

for file_ in allFiles:
    df = pd.read_excel(file_,sheet_name = "Base data",index_col=None, 
    header=0)
    df.index = [os.path.basename(f)] * len(data)
    master_list.append(df)

    frame = pd.concat(master_list)

您可以对DataFrame的列表使用list comprehension,然后在创建用于参数keys的文件名列表:

dfs = [pd.read_excel(f, sheet_name="Base data",index_col=None,header=0) for f in allFiles]

keys = [os.path.basename(f) for f in allFiles]
frame = pd.concat(dfs, keys=keys)
#if want remove default index values
#frame = pd.concat(dfs, keys=keys).reset_index(level=1, drop=True)
  相关解决方案