Te doy la bienvenida a nuestra comunidad, ahora vas a hallar la respuesta de lo que necesitas.
Dos operaciones de “resumir” lo harán. Esta es una operación básica que no requiere licencias adicionales.
Primero calcule un campo que concatene Field1
y Field2
. (Si su tabla no es editable o no debe modificarse, realice estas operaciones en una copia). Es una buena idea delimitar la concatenación; aquí he usado “|” como delimitador.
Field 1 Field 2 Concatenation
Apple Green Apple|Green
Apple Red Apple|Red
Apple Red Apple|Red
Citrus Yellow Citrus|Yellow
Citrus Green Citrus|Green
Citrus Orange Citrus|Orange
Citrus Orange Citrus|Orange
el resumen de la Concatenation
campo, conservando la primera aparición de Field1
, se vera como
Concatenation Field1 Count
Apple|Green Apple 1
Apple|Red Apple 2
Citrus|Yellow Citrus 1
Citrus|Green Citrus 1
Citrus|Orange Citrus 2
Finalmente, el resumen de Field1
obtiene lo que desea:
Field1 Count
Apple 2
Citrus 3
Probablemente desee utilizar la herramienta “Resumen de estadísticas” (licencia ArcView/Basic y superior)
Calcula las estadísticas de resumen de los campos de una tabla.
o herramienta “Frecuencia” (se requiere licencia ArcInfo/Advanced)
Lee una tabla y un conjunto de campos y crea una nueva tabla que contiene valores de campo únicos y el número de ocurrencias de cada valor de campo único.
Luego, puede volver a unir esto a su tabla de origen y calcular un campo (si es necesario), o simplemente usar la herramienta Unir campo (el ejemplo en la Ayuda muestra el flujo de trabajo exacto del que está hablando).
Une el contenido de una tabla a otra tabla basándose en un común
attribute campo.
Puede hacer esto usando un diccionario para realizar un seguimiento de los valores en el campo 1 junto con la cantidad de combinaciones que tiene cada valor con el campo 2.
import arcpy,csv
fields = ['Field 1','Field 2']
with arcpy.da.SearchCursor(table,fields) as rows:
with open('output_table.csv','wb') as f_out:
dw = csv.DictWriter(f_out,fields)
dw.writeheader()
d =
for row in rows:
field1_val = row[0]
field2_val = row[1]
if field1_val not in d.keys():
# If this is the first time encountering the variable, add it to the dictionary and create
# a new list with the associated value in field 2 as the first item in said list
d[field1_val] = [field2_val]
else:
# If the variable has already been encountered, try adding the value in field 2 to the list
# unless it is already in there
if field2_val not in d[field1_val]:
d[field1_val].append(field2_val)
# Now that we have assembled a dictionary containing all variables in field 1 and lists of the associated
# values found in field 2, we can iterate through the variable/list pairs and write to a csv file
for k,v in d.iteritems():
dw.writerow(dict(k,len(v)))