Ich suche nach doppelten Datensätzen in DBF-Dateien basierend auf dem Attribut 'ID'. Ich habe verschiedene DBF-Dateien von 500.000 Datensätzen bis 1,5 Millionen und ich weiß, dass es eine Vielzahl von Duplikaten gibt.
Ich möchte ein Feld 'Duplizieren' hinzufügen, das Ja oder Nein sagt (oder 1 oder 0 ist in Ordnung), wenn das ID-Attribut an anderer Stelle vorhanden ist. Wenn Sie das folgende Python-Skript in Field Calculator verwenden, wird 1 für einen doppelten Eintrag und 0 für einen eindeutigen Eintrag zurückgegeben.
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Der erste Datensatz von beispielsweise 5 doppelten IDs wird jedoch auch als 0 zurückgegeben (die folgenden 4 werden als doppelte IDs betrachtet). Ich würde alle 5 als doppelt markiert markieren müssen, da die ID an anderer Stelle vorhanden ist.
Wenn Sie den folgenden Code verwenden, erhalten Sie eine inkrementelle Zählung, wie oft diese ID vorkommt, wobei 1 die erste Gelegenheit usw. bedeutet.
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Ich möchte nur eine 1 (oder Ja), wenn die ID dieses Datensatzes an anderer Stelle vorhanden ist! (ArcGIS Version 10.1)
Ich habe andere Antworten wie das Python-Skript zum Identifizieren doppelter Datensätze gesehen (Follow-up), aber es funktioniert nicht ganz.