Estoy buscando registros duplicados en archivos dbf basados en el atributo llamado 'ID'. Tengo varios archivos dbf desde 500.000 registros hasta 1,5 millones y sé que hay un montón de duplicados.
Me gustaría añadir un campo 'Duplicado' que diga Sí o No (o 1 o 0 está bien) cuando el atributo ID está presente en otro lugar. Usando el siguiente python script en Field Calculator devuelve 1 para una entrada duplicada y 0 para una entrada única;
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Sin embargo, el primer registro de, por ejemplo, 5 identificaciones duplicadas también se devolverá como un 0 (los 4 siguientes se consideran los duplicados). Necesitaría que los 5 fueran marcados como duplicados ya que el ID existe en otro lugar.
El uso del siguiente código le dará un recuento incremental de cuántas veces ocurre ese ID, siendo 1 la primera ocasión y así sucesivamente;
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Sólo quiero un 1 (o Sí) si el ID de ese registro existe en otro lugar. (ArcGIS versión 10.1)
He visto otras respuestas como Python script para identificar registros duplicados (seguimiento) pero no funciona del todo.