Estoy buscando registros duplicados en archivos dbf basados en el atributo llamado 'ID'. Tengo varios archivos dbf de 500,000 registros a 1.5 millones y sé que hay una gran cantidad de duplicados.
Me gustaría agregar un campo 'Duplicar' que dice Sí o No (o 1 o 0 está bien) cuando el atributo ID está presente en otro lugar. El uso de la siguiente secuencia de comandos de Python 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 ID duplicados también se devolverá como un 0 (los 4 siguientes se consideran duplicados). Necesitaría que los 5 se marquen como duplicados ya que la ID existe en otro lugar.
El uso del siguiente código le dará un recuento incremental de cuántas veces se produce esa ID con 1, es decir, la primera ocasión, etc.
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
¡Solo quiero un 1 (o Sí) si la ID de ese registro existe en otro lugar! (ArcGIS versión 10.1)
He visto otras respuestas como el script Python para identificar registros duplicados (seguimiento) pero no funciona del todo.