首页 > 解决方案 > 循环遍历 .xlsx 文件的目录,将每个文件中的一张表中的数据附加到数据框

问题描述

我正在尝试从电子表格列表中提取特定工作表和该工作表中的特定列 - 考虑一个月度报告,该月度报告在作为文件名的一部分之外的日期戳之外的每个月都有类似的结构 - 即 Metrics 202001.xlsx 和很快

我正在使用 openpyxl,经过大量试验和错误后效果很好。我的问题是我希望能够将这些特定列写入数据框或 .xlsx 以进行汇总。

因此,我正在遍历工作簿并为每个工作簿获取我想要的工作表(谢天谢地,所有工作簿都命名相同)。我被绊倒的地方是拉动特定的列并编写它们。到目前为止,这是我的代码:

import os
import pandas as pd
import openpyxl

path = os.getcwd()
files = os.listdir(path)
print(path)

files_xlsx = [f for f in files if f[-4:] == 'xlsx']
print(files_xlsx)

Sp = pd.DataFrame() #make blank dataframe to fill in
headers = ["Fiscal Month", "Country", "Beginning Balance", "Acquisitions", "Reinstatements", "Terminations", "Delinq"] # fields I want to pull from worksheet within workbook


for f in files_xlsx :
    wb = openpyxl.load_workbook(filename = f)
    ws = wb['Metrics']


for col_cells in ws.iter_cols(min_col=2, max_col=2, max_row= ws.max_row+1): 

    for cell in col_cells:

我想动态填充 min_col 和 max_col 值,而不是硬编码它们。从那里我要么写入我创建的数据框,要么写入一个新的 excel 文件。任何帮助将不胜感激,因为我可以看到此代码具有更多应用程序,而不仅仅是我正在处理的项目。谢谢!

标签: pythonexcelopenpyxl

解决方案


好像我想通了。感谢发帖者回答了与这个问题非常相似的问题!!

import os
import pandas as pd

path = os.getcwd()
files = os.listdir(path)
print(path)

files_xlsx = [f for f in files if f[-4:] == 'xlsx']

df = pd.DataFrame()

for f in files_xlsx:
    data = pd.read_excel(f,"Sponsorship Metrics")
    df = df.append(data)

推荐阅读