问题描述
我大约有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)
1楼
您可以对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)