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

2024-04-20 03:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想遍历一个excel表,并获取列表或字典集中每一行中选定列的值。如果在字典中,对于每一行,第一个选定列中的值将是键,而其他选定列中的值将是该键的值(数组)。我不知道如何告诉python只从选定的列中读取值……因为excel表可能有10列,但我只对3列感兴趣,例如,感兴趣的3列是不连续的。感谢您使用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,作为每个键的数组值。。。


Tags: inimportforindex字典col数组open
2条回答

代码中的一些问题-

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

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

您只需循环遍历所有行,将列索引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拥有所需的字典。

使用此命令

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

返回给定行中单元格对象的切片。

相关问题 更多 >