使用xlrd读取python中的选定列和所有行

时间:2015-07-27 14:36:59

标签: python excel arcpy

我想遍历一个excel表,并获取一组列表或字典中每行中所选列的值。如果在字典中,对于每一行,第一个选定列中的值将是键,而其他所选列中的值将是该键的值(数组)。我无法弄清楚如何告诉python只从选定的列读取值...因为excel表可能有10列,但我只对三个感兴趣,例如,感兴趣的三个不连续。非常感谢您使用XLRD的见解。

    import xlrd
    from xlrd import open_workbook
    import arcpy

    wb = open_workbook ("c:\\Users\\Admin\\Documents\\Marion\\Courses\\GEOG485\\FinalProject\\Data\\ExcelFiles\\Belize_Culvert_Nov15_V4.0.xlsx")

    sheet = wb.sheet_by_index(1)

    keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)]

    dict_list = []
    for rownum in range(sheet.nrows):
        d = {keys[col_index]: sheet.cell(0, 5).value 
        for col_index in xrange(sheet.ncols)}:
            dict_list.append(d)

我想用作键的字段是第5列,值是第16列和第17列,作为每个键的数组值...

2 个答案:

答案 0 :(得分:3)

使用此命令

row_slice(rowx, start_colx=0, end_colx=None)

返回给定行中Cell对象的切片。

答案 1 :(得分:1)

代码中的一些问题 -

  1. keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)] - 这始终将键作为第一行和第6列中的值(行和列为0索引。)

  2. d = {keys[col_index]: sheet.cell(0, 5).value - 这甚至不是有效的python语法

  3. 您可以循环遍历所有行,将列索引4(第5列)作为键,将其余列作为列表并将其添加到字典中,示例 -

    import xlrd
    from xlrd import open_workbook
    import arcpy
    
    wb = open_workbook ("c:\\Users\\Admin\\Documents\\Marion\\Courses\\GEOG485\\FinalProject\\Data\\ExcelFiles\\Belize_Culvert_Nov15_V4.0.xlsx")
    
    sheet = wb.sheet_by_index(1)
    sheetdict = {}
    for rownum in range(sheet.nrows):
        sheetdict[sheet.cell(rownum,4)] = [sheet.cell(rownum,15),sheet.cell(rownum,16)]
    

    最后,sheetdict具有必需的字典。