Uso de XLRD para leer columnas seleccionadas y todas las filas en Python -- python campo con excel campo con arcpy camp Relacionados El problema

Using xlrd to read selected columns and all rows in python


1
vote

problema

Español

Me gustaría hacer un bucle a través de una tabla de Excel y obtener los valores para columnas seleccionadas en cada fila en un conjunto de listas o Diccionario. Si en un diccionario, para cada fila, el valor en la primera columna seleccionada sería la clave y los valores en las otras columnas seleccionadas serían los valores (matriz) para esa tecla. No puedo averiguar cómo decirle a Python que lea los valores de solo columnas seleccionadas ... para la tabla de Excel puede tener 10 columnas, pero solo estoy interesado en tres, por ejemplo, y los tres de interés no son contiguos. Agradecería sus ideas utilizando 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)   

El campo que quiero usar como clave es la columna 5 y los valores son las columnas # 16 y # 17 como un valor de matriz para cada clave ...

Original en ingles

I would like to loop through an excel table and get the values for selected columns in each row in a set of lists or dictionary. if in a dictionary, for each row, the value in the first selected column would be the key and the values in the other selected columns would be the values (array) for that key. I cannot figure out how to tell python to read values from only selected columns...for the excel table may have 10 columns but I am only interest in three for example, and the three of interest are not contiguous. Would appreciate your insights using 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) 

The field that I want to use as key is column 5 and the values are columns #16 and #17 as an array value for each key...

        
   
   

Lista de respuestas

3
 
vote

Utilice este comando

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

Devuelve una rebanada de los objetos de la célula en la fila dada.

 

Use this command

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

Returns a slice of the Cell objects in the given row.

 
 
1
 
vote

Algunos problemas en su código -

  1. keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)] - Esto siempre toma las teclas como el valor en la primera fila y la 6ª columna (filas y columnas son 0 indexadas).

  2. d = {keys[col_index]: sheet.cell(0, 5).value - Esta no es ni siquiera es válida Sintaxis de Python

Puede simplemente hacer unir todas las filas, tome el índice de columna 4 (5ª columna) como la clave y el resto en una lista y agregue eso a un diccionario, ejemplo -

  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)]   

Al final, 99887776610 tiene el diccionario requerido.

 

Some issues in your code -

  1. keys = [sheet.cell(0, 5).value for col_index in xrange(sheet.ncols)] - This always takes the keys as the value in the first row and 6th column (Rows and columns are 0 indexed.)

  2. d = {keys[col_index]: sheet.cell(0, 5).value - This is not even valid python syntax

You can just loop over all the rows, take column index 4 (5th column) as key and the rest in a list and add that to a dictionary, Example -

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)] 

In the end, sheetdict has the required dictionary.

 
 

Relacionados problema

0  wxpython y arcgis  ( Wxpython and arcgis ) 
Estoy trabajando en una aplicación de escritorio construida con WX Python. Me gustaría que la aplicación visualice los mapas (shapefiles) como un software GIS...

0  ¿Puedo ejecutar un script de Python en Arcpy de un archivo .bat?  ( Can i run a python script in arcpy from a bat file ) 
Soy capaz de abrir ArcGIS desde el archivo por lotes, pero para que el script se ejecute correctamente, necesito poder ejecutarlo de la consola de Python dent...

1  Python IDE se bloquea con EofError 10054 al llamar a Arcpy Listrasters ()  ( Python ide crashes with eoferror 10054 when calling arcpy listrasters ) 
Cuando uso arcpy.ListRasters Dentro de un IDE (probado para el pyscripter e inactivo), mi proceso se detiene. En ocioso, el motor de Python simplemente se r...

-1  Posición de la lista de alimentación como parámetro a la función arcpy.symdiff_analysis  ( Feeding list position as parameter to arcpy symdiff analysis function ) 
Nuevo en Python. Tengo dos conjuntos de datos, características de entrada (NewDEMOFC) y funciones de actualización (SENTE existente) con 5 clases de caracterí...

0  Punto de arcpy al resultado de la simplificación de polilínea  ( Arcpy point to polyline oversimplifying result ) 
Estoy tratando de convertir los puntos GPS ~ 4K en una polilínea. Finalmente, quiero amortiguar los puntos e identificar la cobertura de la ruta. Lo que estoy...

1  Instalación de PIP para Arcpy  ( Installing pip for arcpy ) 
Estoy intentando instalar PIP para Arcpy (ArcGIS 10.2 en Windows 7). Running get-pip.py resultados en el siguiente mensaje de error: X:python>python get-pi...

4  Arcpy Obtenga la ruta de la base de datos de la clase de entidad en el conjunto de datos de características  ( Arcpy get database path of feature class in feature dataset ) 
Estoy tratando de obtener la ruta de la base de datos de una clase de entidad que puede o no estar en un conjunto de datos de características. Estoy usando el...

1  Error de tampón de anillo múltiple Arcpy 000210: No se puede crear la salida  ( Arcpy multiple ring buffer error 000210 cannot create output ) 
Tengo problemas para usar MultiplicerBuffer_análisis de Arcpy Library. Script que estaba trabajando anteriormente (hace 14 días) y no me toqué de repente, de ...

-1  ¿Cómo agregar un punto con las coordenadas XY dentro de una clase de entidad en Arcpy?  ( How to add a point with xy coordinates inside a feature class in arcpy ) 
Soy bastante nuevo para Arcpy y literalmente pasé el día tratando de averiguar cómo agregar un punto con las coordenadas XY dentro de una clase de entidad en ...

0  Cómo corregir UnicodencodeError: 'ASCII' CODEC no puede codificar el carácter U ' xc9' en la posición 15: Ordinal no en el rango (128)  ( How to fix unicodeencodeerror ascii codec cant encode character u xc9 in p ) 
Necesito imprimir todos los nombres de conjuntos de datos, características, clase y campos en una geodatabase empresarial (Oracle SDE). Hice un script que f...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos