代码之家  ›  专栏  ›  技术社区  ›  Charles R

读取包含多个标题和未命名列的Excel

  •  0
  • Charles R  · 技术社区  · 6 年前

    我收到了一些这样的excel文件:

          USA            UK     
          plane   cars   plane  cars    
    2016  2       7      1      3     # a comment after the last country
    2017  3       1      8      4   
    

    有一个数量不详的国家,在上一篇专栏文章之后可以发表评论。

    当我读到这样的excel文件时…

    df = pd.read_excel(
        sourceFilePath,
        sheet_name = 'Sheet1',
        index_col = [0],
        header = [0, 1]
    )
    

    …我有一个值错误:

    ValueError: Length of new names must be 1, got 2
    

    问题是我不能使用usecols参数,因为在读取我的文件之前,我不知道有多少国家。

    我怎么能读到这样的文件?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Brent Allard    6 年前

    熊猫可能无法修复你的特殊用例,但是你可以编写一个程序来修复电子表格。 openpyxl . 它有非常清晰的文档,但以下是如何使用它的概述:

    import openpyxl as xl
    
    wb = xl.load_workbook("ExampleSheet.xlsx")
    
    for sheet in wb.worksheets:
        print("Sheet Title => {}".format(sheet.title))
        print("Dimensions => {}".format(sheet.dimensions)) # just returns a string
        print("Columns: {} <-> {}".format(sheet.min_column, sheet.max_column))
        print("Rows: {} <-> {}".format(sheet.min_row, sheet.max_row))
        for r in range(sheet.min_row, sheet.max_row + 1):
            for c in range(sheet.min_column, sheet.max_column + 1):
                if (sheet.cell(r,c).value != None):
                    print("Cell {}:{} has value {}".format(r,c,sheet.cell(r,c).value))
    
        2
  •  0
  •   Derek Krantz    6 年前

    用一下怎么样 pd.read_csv ?

    一旦加载,您就可以确定您拥有多少列。 df.columns