使用多个标题和未命名的列读取Excel

时间:2018-06-11 17:18:48

标签: python pandas

我收到了一些像这样的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 param,因为在阅读我的文件之前我不知道有多少个国家。

我该如何阅读这样的文件?

2 个答案:

答案 0 :(得分:0)

可能的Pandas无法修复您的特殊用例,但您可以使用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))

答案 1 :(得分:0)

仅使用pd.read_csv

加载后,您可以使用df.columns

确定您拥有的列数