【问题标题】:Extract header from each sheet of an excel file and save it in a dataframe从excel文件的每张表中提取标题并将其保存在数据框中
【发布时间】:2021-09-21 08:54:33
【问题描述】:

通过 pandas 读取所有 excel 表格并提取每张表格的第一行并将其保存为数据框!我想提取 excel 文件中每张工作表的第一行,并将其保存在数据框中。

这就是我正在尝试的,我该如何前进?

import pandas as pd

df = pd.DataFrame()
input_excel = pd.ExcelFile("f1.xlsx")

for sheet in input_excel.sheet_names:
    input_sheet = input_excel.parse(sheet, headers=True)
    df.append(input_sheet)

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我建议你可以使用pd.read_excel (link here),如下:

    xls = pd.ExcelFile(file_path)
    my_excel = pd.read_excel(xls, your_sheet_name = None)
    
    for pos,val in enumerate(my_excel.keys()):
        if pos == 0:
            my_df = my_excel[val].iloc[0,:]
        else:
            my_df = my_df.append(my_excel[val].iloc[0,:])
    
    

    这不是一个很好的解决方案,但应该可以。

    【讨论】:

      【解决方案2】:

      如果每个 sheetname 有相同数量的列(第一行),则将 read_excel 和 sheet_name=None 用于 DataFrames 的所有 sheetname - DataFrames 的字典,然后将列解析为列表,最后传递给 DataFrame:

      dfs = pd.read_excel("sample.xlsx", sheet_name=None)
      
      cols = [df.columns for i, df in dfs.items()]
      print (cols)
      [Index(['a', 'e'], dtype='object'), Index(['u', 't'], dtype='object'), 
       Index(['i', 'p'], dtype='object')]
      
      df = pd.DataFrame(cols)
      print (df)
         0  1
      0  a  e
      1  u  t
      2  i  p
      

      如果有不同数量的列,一种可能的想法:

      dfs = pd.read_excel("files/a.xlsx", sheet_name=None)
      
      print ([df.columns for i, df in dfs.items()])
      [Index(['a', 'e'], dtype='object'), Index(['u', 't'], dtype='object'),
       Index(['i', 'p', 'd', 'f'], dtype='object')]
      
      cols = [(x, i) for i, df in dfs.items() for x in df.columns]
      print (cols)
      [('a', 'Sheet1'), ('e', 'Sheet1'), ('u', 'Sheet2'), ('t', 'Sheet2'), 
       ('i', 'Sheet3'), ('p', 'Sheet3'), ('d', 'Sheet3'), ('f', 'Sheet3')]
      
      df = pd.DataFrame(cols)
      print (df)
         0       1
      0  a  Sheet1
      1  e  Sheet1
      2  u  Sheet2
      3  t  Sheet2
      4  i  Sheet3
      5  p  Sheet3
      6  d  Sheet3
      7  f  Sheet3
      

      【讨论】:

      • 您的第一个解决方案完美运行!非常感谢您只需要基本的预处理
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多