【问题标题】:Python/Pandas: Iterate over Excel files and extract informationPython/Pandas:遍历 Excel 文件并提取信息
【发布时间】:2020-06-25 18:11:33
【问题描述】:

我发现了关于从同一文件的不同工作表中提取信息的主题,以及类似问题的解决方案,但与我的不完全一样。

我有几个 Excel 工作簿,每个工作簿都包含几张工作表。我想遍历每个工作簿并从工作表名称“3。价格”中提取信息。此表在所有文件中都可用。每个文件中要从该表中提取的信息是两条。第一个始终位于单元格区域 E13:H13 中,第二个位于单元格 F19、I19 和 K19 中。

我想将提取的两条信息彼此相邻放置(对于给定文件),然后将每个文件的提取物堆叠在一个主文件中。另外,合并文件的第一列应该是文件名。

所以是这样的:

到目前为止我已经尝试过,没有运气

from openpyxl import load_workbook
import os
import pandas as pd

directory = os.listdir('C:\\User\\files')

for file in directory:
    if os.path.isfile(file):

        file_name = file[0:3]
        workbook = load_workbook(filename = file)
        sheet = workbook['3. Prices']
        e13 = sheet['E13'].value
        f13 = sheet['F13'].value
        g13 = sheet['G13'].value
        h13 = sheet['H13'].value
        f19 = sheet['F19'].value
        i19 = sheet['I19'].value
        k19 = sheet['K19'].value

        df = df.append(pd.DataFrame({
                "File_name":file_name, 
                "E13":e13, "F13":f13, "G13":g13,"H13":h13,
                "F19":f19,"I19":i19,"K19":i19,
                }, index=[0]))

【问题讨论】:

  • 没有运气请更具体。
  • 顺便说一句,使用临时数据结构并在最后创建 DataFrame 总是一个好主意,而不是重复附加或连接。

标签: python pandas openpyxl


【解决方案1】:

我想通了。我错过了两个元素:1)更改当前工作目录以匹配变量“目录”中的目录和 2)在开始时定义一个数据框

from openpyxl import load_workbook
import os
import pandas as pd

os.chdir('C:\\User\\files') 
directory = os.listdir('C:\\User\\files')

df=pd.DataFrame()    

for file in directory:
    if os.path.isfile(file):

        file_name = file[0:3]
        workbook = load_workbook(filename = file, data_only=True)
        sheet = workbook['3. Prices']
        e13 = sheet['E13'].value
        f13 = sheet['F13'].value
        g13 = sheet['G13'].value
        h13 = sheet['H13'].value
        f19 = sheet['F19'].value
        i19 = sheet['I19'].value
        k19 = sheet['K19'].value

        df = df.append(pd.DataFrame({
                "File_name":file_name, 
                "E13":e13, "F13":f13, "G13":g13,"H13":h13,
                "F19":f19,"I19":i19,"K19":i19,
                }, index=[0]))

【讨论】:

    猜你喜欢
    • 2011-07-22
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多