Skip to main content
 首页 » 编程设计

python之如何将多个项目 append 到 pandas df

2025年05月04日27oomusou

我有数百个 excel 文件,我想创建一个 df,在一列中包含 excel 文件的名称,然后在第二列中包含每个选项卡的名称。我的脚本将遍历每个文件名,但我 append 的方式不正确,而且我找不到解决方案。

os.chdir(r'C:\Users\mbobak\Documents\\') 
FileList = glob.glob('*.xlsx') 
 
tabs= pd.DataFrame(columns=['filename','tabs']) 
 
for filename in FileList: 
    xl = pd.ExcelFile(filename).sheet_names 
    tabs= tabs.append([filename,xl]) 

期望的输出:

filename    tabs 
doc1.xlsx   tab1 
doc1.xlsx   tab2 
doc1.xlsx   tab3 
doc1.xlsx   tab4 
doc2.xlsx   tab1 
doc2.xlsx   tab2 
doc2.xlsx   tab3 

请您参考如下方法:

这是一种方法。一步创建数据框是一种很好的做法,也是一种高效的做法。这是因为 append 到列表比 append 到数据框更便宜。

FileList = glob.glob('*.xlsx') 
 
def return_files_tabs(FileList): 
    for filename in FileList: 
        for sheet in pd.ExcelFile(filename).sheet_names: 
            yield [filename, sheet] 
 
df = pd.DataFrame(list(return_files_tabs(FileList)), 
                  columns=['Filename', 'Tab']) 

解释

  • 循环遍历 sheet_names 属性中的每个文件和每个工作表。
  • 通过生成器生成文件名和工作表。
  • 根据耗尽的生成器列表构建数据框,命名列。