代码之家  ›  专栏  ›  技术社区  ›  Umar.H

连接Excel文件时,将文件名用作引发错误的索引

  •  1
  • Umar.H  · 技术社区  · 6 年前

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

    我想在那些xlsx文件中获取一张特定的表,并将它们合并到一个文件中。

    我使用以下代码,我经常使用这些代码将多个文件合并到一个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)
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   jezrael    6 年前

    您可以对数据帧列表使用列表理解,然后创建用于参数的文件名列表 keys 在里面 concat

    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)