迭代多个Excel文件,使用python将特定单元格保存到数据帧中

2024-05-12 07:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:我想遍历Excel文件并提取特定值并保存到数据帧中。在

为什么:这有助于QA流程,通过循环,我可以将所有报表拉到文件夹中,并快速保存关键数据点。当前的过程包括打开每个文件,将某些单元格复制并粘贴到“主QA”xlsx文件中

示例:一个文件夹中有三个文件 enter image description here

它们都有两个数据点Date和{}细胞{}和细胞{}

Two data points for each file

我们可以使用openpyxl打印每个文件的每个数据点

import os 
import openpyxl
import pandas as pd

path=r"C:\Users\Desktop\StackOverflow"
os.chdir(path)

for resi_files in os.listdir(path):
     if os.path.isfile(resi_files):
                myworkbook=openpyxl.load_workbook(resi_files)
                worksheet= myworkbook['Sheet1']
                print(resi_files)
                print("Date")
                print(worksheet.cell(4, 2).value)
                print("count")
                print(worksheet.cell(4, 3).value)

这将为我们提供以下输出:

enter image description here

但是!这对我们没有任何好处,我们希望能够比较不同的单元值以用于QA目的。所以我们需要将这些值保存到一个数据帧中。在


Tags: 文件数据pathimport文件夹dateosfiles
2条回答

要保存到数据帧必须执行以下操作:

import os 
import openpyxl
import pandas as pd
import numpy as np #added to save count as a number

path=r"C:\Users\Desktop\StackOverflow"
os.chdir(path)

merged=pd.DataFrame()
for resi_files in os.listdir(path):
     if os.path.isfile(resi_files):
                myworkbook=openpyxl.load_workbook(resi_files)
                worksheet= myworkbook['Sheet1']
                data = pd.DataFrame(data=[worksheet.cell(4, 2).value], columns= ['Date'])
                data['count'] = np.array([worksheet.cell(4, 3).value])
                    # to grab a different cell, change the 4 and 3 
                    # 4 means 4 rows down, 3 is 3 columns over, not indexed at 0
                merged=pd.concat([merged,data])

通过打印merged,我们看到了一个更容易处理的数据帧。在

查理·克拉克上面提到的解决方案并不是我所需要的。我需要抓取特定的单元格,因为我使用的Excel文档是用很多空单元格格式化的。但是,如果您有更好的格式Excel表,这是一个值解决方案。下面是根据查理的建议编辑的代码

import os 
import openpyxl
import pandas as pd
import numpy as np

path=r"C:\Users\Desktop\StackOverflow"
os.chdir(path)

merged=pd.DataFrame()
for resi_files in os.listdir(path):
     if os.path.isfile(resi_files):
                myworkbook=openpyxl.load_workbook(resi_files)
                worksheet= myworkbook['Sheet1']
                data = pd.DataFrame(worksheet.values)
                merged=pd.concat([merged,data])

print(merged)

这将为我们提供上述特定情况下的输出:

enter image description here

相关问题 更多 >