python - 循环遍历 .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 文件。任何帮助将不胜感激,因为我可以看到此代码具有更多应用程序,而不仅仅是我正在处理的项目。谢谢!
解决方案
好像我想通了。感谢发帖者回答了与这个问题非常相似的问题!!
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)
推荐阅读
- java - 从现有变量创建映射(例如,Java 等价于 JavaScript 的 `{varA, varB, varC}`)
- html - 在模板中动态加载背景图片
- r - 使用R中的函数和map()通过不同的列连接多个数据框?
- java - 如何改进解决缺失坐标的算法?
- javascript - 如何将视频背景对齐为居中而没有截止?
- docker - Docker ping ipv6 端点
- vb.net - 如何取消VB中的按键动作?
- woocommerce - 如何在 WooCommerce 中的 save_post_shop_order 期间发送错误消息
- python - 如何使用测试文件和预期的输出文件测试 Python
- regex - Pyspark SQL使用LIKE选择与模式匹配的所有行不起作用