【问题标题】:Pandas - Importing multiple worksheets from one excel file with header in one worksheetPandas - 从一个 Excel 文件中导入多个工作表,并在一个工作表中包含标题
【发布时间】:2021-02-01 08:30:19
【问题描述】:

我有一个包含多个工作表的 excel 文件(没有:工作表可以更改)。只有第一个工作表有标题,所有工作表中的列数相同。我需要将所有工作表中的数据导入到一个数据框中。

我是否应该使用“for 循环”来遍历每个工作表,如何组合数据框以包含所有工作表的详细信息?什么是代码?请帮忙...

import pandas as pd 
sheet_number=len(pd.read_excel('file.xls',sheetname=None) 
print (sheet_number) 
4 
i=0 

for i in sheet_number: 
    df=read_excel('file.xls',sheetname='i') i+=1

【问题讨论】:

  • 到目前为止您尝试了什么,您的代码和错误在哪里?
  • 我是编码新手,这就是我所做的......我已经设法获得了 excel 文件中的工作表数量。我被困在 for 循环中,不知道如何编写代码来遍历每张工作表并将数据合并到一个数据框中.... import pandas as pd sheet_number=len(pd.read_excel('file.xls ',sheetname=None) print (sheet_number) 4 i=0 for i in sheet_number: df=read_excel('file.xls',sheetname='i') i+=1 这是我写的,for循环不完整...

标签: pandas dataframe


【解决方案1】:

当您使用pd.read_excel 时,它有一个名为sheet_name 的可选参数,如果您将其设置为None,它将在整个excel 工作簿中作为字典读取,也就是说,键是工作表名称,值是您的 Excel 工作表的数据框。

import pandas as pd

dfs = pd.read_excel(path_to_excel,sheet_name=None,header=None)

#next we need to grab the headers from the first worksheet.
sheet1 = next(iter(dfs))
cols = dfs[sheet1].iloc[0].values #next(inter) grabs the first key.

#remove row with header in first sheet.
dfs[sheet1] = dfs[sheet1].iloc[1:]

#finally concat dataframe.
df = pd.concat(dfs)
df.columns = cols

       A   B   C
Sheet1 1   0   1   2
       2   3   4   5
       3   6   7   8
       4   9  10  11
       5  12  13  14
Sheet2 0   0   1   2
       1   3   4   5
       2   6   7   8
       3   9  10  11
       4  12  13  14
Sheet3 0   0   1   2
       1   3   4   5
       2   6   7   8
       3   9  10  11
       4  12  13  14

【讨论】:

  • 代码有效。 ?..... 导入的数据框有很多列和行的空白数据。我想删除。如果我首先删除所有行并创建一个新的 df,然后删除所有列 df1。有没有更简单的方法..?这是我正在考虑使用的代码..... df=df0.dropna(how='all',axis=1) 然后使用 df1=df.drop.na(how='all',axis=0)
  • @ssks 没有关注 - 你为什么不更新你的问题?
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多