使用 Python 提取和合并 Excel 数据

Posted

技术标签:

【中文标题】使用 Python 提取和合并 Excel 数据【英文标题】:Extracting and consolidating Excel data using Python 【发布时间】:2018-03-13 00:58:14 【问题描述】:

我有一个包含 40 张左右的 Excel (.xlsx) 文件。每个工作表具有相同的结构,但包含不同的数据。我想从每张纸中提取信息并将其合并为一张,每张纸上的信息一个接一个。我需要从中提取的信息有两个:

    工作表名称,始终位于单元格 E3 中 感兴趣的单元格区域,始终位于第 72-85 行和 E-V 列之间

此提取的信息将粘贴到合并工作表的第 2-15 行中,其中工作表名称位于一列中,所有其他信息位于其旁边的列中。然后,从下一张提取的信息将粘贴到第 16-29 行,依此类推。

我是 Python 新手,我正在运行 Python 3.6.1。我找到了有关如何使用 Python 组合 Excel 文件的解决方案,但没有找到用于从 Excel 工作表中的指定单元格中提取信息的解决方案。

任何指导都会非常有帮助。

更新 1:我设法将我的一张工作表的区域加载到数据框中。

import pandas as pd
cis = pd.ExcelFile(r"C:\mypath\myfile.xlsx") 
df1 = cis.parse('1. Consumers', skiprows=[0,1,2,3,4,5,6],parse_cols=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).drop([13])

但是,我仍然必须将工作表名称添加到数据框中,然后在所有工作表上运行相同的循环,最后将每个工作表中的信息一起附加到一个数据框/文件中。

【问题讨论】:

所有工作表都有相同的列吗? @muazfaiz。是的。 设置 Power Query 需要 2 分钟,这是 2010 年和 2013 年的加载项,2016 年作为 Get 和 Transform 内置。 @teylyn 感谢您的提示。但是,我希望使用 Python 脚本来执行此操作,主要是因为它需要在不同的文件集中多次使用。 使用 Power Query 的另一个原因。它可以设置一次,然后在不同的文件集上重复多次。 【参考方案1】:

这应该足以让你开始:

xls = pd.ExcelFile('excel_file_path.xls')
for sheet in xls.sheet_names:
    df = pd.read_excel(file_name, sheetname=sheet)

如果您已经非常熟悉 excel,那么您会很快学会 pandas。您绝对应该考虑将 jupyter notebook 与 python 一起使用。 Jupyter notebook 本质上将创建一个类似于 UI 的电子表格,其中包含大量用于运行分析和操作数据的内置功能。

参考文献:

Use PANDAS to read multiple sheets from same workbook

Link to jupyter notebook documentation

Pandas tutorials

Practical business solutions with pandas for python

【讨论】:

谢谢。另一位用户提到了“openpyxl”。有理由更喜欢熊猫而不是 openpyxl 吗?我不知道如何使用 pandas 提取特定的单元格。 查看我的更新。你的代码能帮我遍历文件吗? @StatsScared 是的,如果所有工作表都具有相同的结构,您应该能够通过一个简单的循环处理所有工作表。用于选择特定行列查看:pandas.pydata.org/pandas-docs/stable/indexing.html 请接受答案,如果您对此过程的其他部分有更多问题,请检查已经提出的问题,通常已在此处提出,否则发布特定于您的新问题的问题。这里有一个庞大的熊猫用户社区,不断地回答问题。我很少有机会在别人之前回答问题。

以上是关于使用 Python 提取和合并 Excel 数据的主要内容,如果未能解决你的问题,请参考以下文章

Python万年历怎么把表头和数字部分结合

excel如何根据单元格数值循环求值?

excel用VBA把所有奇数行数据合并到一行,偶数行数据合并到另一行,保持对应关系。

多个 Excel文件怎么提取某些特定的数据,然后把把这些数据合并。急求,

请教!excel单元格内的数值发生变化时如何保留它以前的值

excel如何提取所需关键字所在行?