2015-07-27 2 views
1

Я хотел бы пропустить таблицу excel и получить значения для выбранных столбцов в каждой строке в наборе списков или словаря. если в словаре для каждой строки значение в первом выбранном столбце будет ключевым, а значениями в других выбранных столбцах будут значения (массив) для этого ключа. Я не могу понять, как сказать python для чтения значений только из выбранных столбцов ... для таблицы excel может быть 10 столбцов, но, к примеру, меня интересуют только три, и три из них не соприкасаются. Поблагодарите ваши идеи, используя XLRD.Использование xlrd для чтения выбранных столбцов и всех строк в python

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

импорт xlrd из xlrd импорта open_workbook импорт arcpy М.Т. = open_workbook ("C: \\ Users \\ \\ администратора Documents \\ Мэрион \\ \\ Курсы GEOG485 \\ FinalProject \\ Data \\ ExcelFiles \ \ Belize_Culvert_Nov15_V4.0.xlsx ") печати wb.nsheets лист = wb.sheet_by_index (1) клавиши = [sheet.cell (0, 5) .value для col_index в xrange (sheet.ncols)] dict_list = [] для row_index в xrange (1, sheet.nrows): d = {keys [col_index]: sheet.cell (row_index, col_index) .value для col_index в xrange (sheet.ncols)} dict_list.append (d) print dict_list – Marion

+0

Измените свой вопрос, включив этот код, и укажите **, что сработало, а что нет **. –

ответ

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 - Это даже не действительный синтаксис питона

Вы можете просто цикл по всем строкам, возьмите индекс столбца 4 (пятый столбец), как ключ, а остальные в списке и добавить, что в словарь, пример -

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 имеет необходимый словарь.

3

Используйте эту команду

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

Возвращает срез объектов сотовой ячейки в данной строке.