我想遍历一个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列,作为每个键的数组值...
答案 0 :(得分:3)
使用此命令
row_slice(rowx, start_colx=0, end_colx=None)
返回给定行中Cell对象的切片。
答案 1 :(得分:1)
代码中的一些问题 -
keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)]
- 这始终将键作为第一行和第6列中的值(行和列为0索引。)
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
具有必需的字典。