4 votos

Uso de da.SearchCursor para obtener el recuento de valores únicos en un campo

Es posible el uso de arcpy.da.SearchCursor() para obtener un recuento de características únicas en un campo sin un diccionario?

Así que, con esto me refiero a que si tengo un campo de TEXTO que contiene 10.000 filas rellena con a o B. ¿puedo usar la da.SearchCursor rápidamente me dan el recuento de la cantidad total de Un TEXTO y B en el TEXTO?

Sé que es posible utilizar las Estadísticas de Resumen o el Obtener el número de la herramienta, pero estas implican tener que hacer una función de la capa y, a continuación, seleccionar las características o patear una tabla. Estoy mirando para tener un par de pasos como sea posible en mi script :-)

8voto

Paul Puntos 555

Utilice collections.Counter :

 import collections

with arcpy.da.SearchCursor(feature_class, field) as cur:
    count_of_items = collections.Counter(row[0] for row in cur)

print "Sorted items"
print "----"

for item in sorted(count_of_items.items(), key=lambda x:x[1]):
    print "{0:>12} {1:>4}".format(item[0], item[1])
 

2voto

Jon M Puntos 206

Creo que esta es la forma más fácil de hacerlo:

 all_values = [r[0] for r in arcpy.da.SearchCursor(table, [field])]
unique_values = set(all_values)
count_dict = {}
for value in unique_values:
    count_dict[value] = all_items.count(value)
 

1voto

Ron Warholic Puntos 7479

Así que si usted realmente desea utilizar un cursor para realizar esta tarea, no quieres un diccionario, y es sólo un par de conocidos/valores esperados, sólo podía bucle a través de cada registro en la búsqueda del cursor resultante del conjunto de datos y hacer algo como (pseudo-código, a continuación, ajustar a trabajar para su situación y requisitos de sintaxis).

aCounter = 0
bCounter = 0
for record in cursorOutput:
    if record[field] == "String A":
        aCounter += 1
    elif record[field] == "String B":
        bCounter += 1

Pero usted también puede utilizar las estadísticas de resumen GP de la herramienta y escribir el resultado en un entorno espacio de trabajo temporal y no mantener la salida, lo que, posiblemente, la mitigación de algunos de sus preocupaciones con el uso de ese método.

Sólo un par de pensamientos, espero que ayude.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X