「ID」と呼ばれる属性に基づいて、dbfファイル内の重複レコードを探しています。50万レコードから150万レコードまでのさまざまなdbfファイルがあり、多数の重複があることを知っています。
ID属性が他の場所にある場合に、「はい」または「いいえ」(または1または0で十分)と表示されるフィールド「重複」を追加したいと思います。Field Calculatorで次のPythonスクリプトを使用すると、重複するエントリに対して1が返され、一意のエントリに対して0が返されます。
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
ただし、たとえば5つの重複IDの最初のレコードも0として返されます(後続の4つは重複と見なされます)。IDが他の場所に存在するため、5つすべてを重複としてマークする必要があります。
次のコードを使用すると、そのIDが何回発生したかを増分カウントできます。1は1回目を意味し、以下同様です。
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
そのレコードのIDが他の場所に存在する場合は、1(または[はい])が必要です。(ArcGISバージョン10.1)
重複レコードを特定するためのPythonスクリプト(フォローアップ)などの他の回答を見てきましたが、うまくいきません。