使用 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 数据的主要内容,如果未能解决你的问题,请参考以下文章
excel用VBA把所有奇数行数据合并到一行,偶数行数据合并到另一行,保持对应关系。