当前位置: 首页 > 面试题库 >

使用熊猫阅读具有多个标题的Excel表格

益光亮
2023-03-14
问题内容

我有一个带有多个标题的Excel工作表,例如:

_________________________________________________________________________
____|_____|        Header1    |        Header2     |        Header3      |
ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColDK|
1   | ds  | 5  | 6  |9   |10  | .......................................
2   | dh  |  ..........................................................
3   | ge  |  ..........................................................
4   | ew  |  ..........................................................
5   | er  |  ..........................................................

现在在这里您可以看到前两列没有标题,它们为空白,而其他列具有标题,例如Header1,Header2和Header3。因此,我想阅读此表并将其与其他具有类似结构的表合并。

我想将其合并在第一列“ ColX”上。现在我正在这样做:

import pandas as pd

totalMergedSheet = pd.DataFrame([1,2,3,4,5], columns=['ColX'])
file = pd.ExcelFile('ExcelFile.xlsx')
for i in range (1, len(file.sheet_names)):
    df1 = file.parse(file.sheet_names[i-1])
    df2 = file.parse(file.sheet_names[i])
    newMergedSheet = pd.merge(df1, df2, on='ColX')
    totalMergedSheet = pd.merge(totalMergedSheet, newMergedSheet, on='ColX')

但是我不知道它没有正确读取列,我认为不会以我想要的方式返回结果。所以,我希望结果框架应该像这样:

________________________________________________________________________________________________________
____|_____|        Header1    |        Header2     |        Header3      |        Header4     |        Header5      |
ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColK| ColL|ColM|ColN|ColO||ColP|ColQ|ColR|ColS|
1   | ds  | 5  | 6  |9   |10  | ..................................................................................
2   | dh  |  ...................................................................................
3   | ge  |  ....................................................................................
4   | ew  |  ...................................................................................
5   | er  |  ......................................................................................

有任何建议请。谢谢。


问题答案:

熊猫已经具有将为您读取整个Excel电子表格的功能,因此您无需手动分析/合并每张工作表。看看pandas.read_excel()。它不仅使您可以单行读取Excel文件,还提供了一些选项来帮助解决您遇到的问题。

由于您有子列,因此您正在寻找的是MultiIndexing。默认情况下,大熊猫将在第一行中作为唯一的标题行读取。您可以向其中传递一个header参数pandas.read_excel(),该参数指示要用作标题的行数。在您的特定情况下,您需要header=[0, 1]指示前两行。您可能还会有多张纸,因此您也可以通过sheetname=None(这告诉它要遍历所有纸)。该命令将是:

df_dict = pandas.read_excel('ExcelFile.xlsx', header=[0, 1], sheetname=None)

这将返回一个字典,其中的键是工作表名称,值是每个工作表的DataFrames。如果要将其全部折叠到一个DataFrame中,则可以简单地使用pandas.concat:

df = pandas.concat(df_dict.values(), axis=0)


 类似资料:
  • 当我只想要列的一个子集(例如总共20列中的第4和第7列)时,如何使用Pandas读取.csv文件(没有头)?我似乎无法执行

  • 我有一个很大的电子表格文件(.xlsx),我正在使用python处理它。碰巧我需要那个大文件中两个选项卡(工作表)中的数据。其中一个选项卡包含大量数据,而另一个选项卡只有几个方形单元格。 当我使用,我觉得整个文件都已加载(不仅仅是我感兴趣的工作表)。因此,当我使用该方法两次(每张工作表一次)时,我实际上不得不忍受整个工作簿被读取两次(即使我们只使用指定的工作表)。 如何仅加载特定的工作表与?

  • 问题内容: 刚开始使用pandas和python。 我有一个工作表,已读入数据框并应用了前向填充(ffill)方法。 然后,我想创建一个包含两个工作表的Excel文档。 在应用填充方法之前,一个工作表将在数据框中包含数据,而在下一个工作表将应用了填充方法的数据框。 最终,我打算为数据框的特定列中的每个数据唯一实例创建一个工作表。 然后,我想对结果应用某些vba格式-但我不确定哪个dll或插件,或者

  • 问题内容: 我有一个数据集,其中我试图确定每个人的危险因素数量。所以我有以下数据: 每个属性(年龄,吸烟者,糖尿病)都有自己的条件来确定是否是危险因素。因此,如果年龄> = 45,则是一个危险因素。吸烟者和糖尿病为“ Y”是危险因素。我想要添加一列,以根据这些条件总计每个人的风险因素数量。因此数据如下所示: 我有一个样本数据集,我在Excel中鬼混,而我这样做的方式是使用COUNTIF公式,如下所

  • 线程“main”java.lang.nosuchfielderror:RAW_XML_FILE_HEADER位于org.apache.poi.openxml4j.opc.internal.ziphelper.verifyzipheader(ziphelper.java:179)位于org.apache.poi.openxml4j.opc.internal.ziphelper.openzipstre

  • 问题内容: 我的数据有年龄,还有每月付款。 我正在尝试汇总付款总额,但不汇总年龄(平均有效)。 是否可以对不同的列使用不同的功能? 问题答案: 您可以将列名作为键,将想要的函数作为值传递给字典。