删除(make null)重复的字段值

时间:2017-04-14 19:33:40

标签: python duplicates arcpy

我已经为此搜索了一个解决方案,但还没有找到完整的解决方案。我有几十个表,每个表都包含数千个行功能。无论何时拆分线要素,都会创建另一条记录,但新线(记录)仍然具有旧的ASSETID。这意味着重复的ASSETID诞生了。是维护python脚本,可以找到所有重复的ASSETID并使它们为空?这将只留下原始的ASSETID,我有一个后续运行的脚本,它将用一个新的随机生成的ASSETID填充ASSETID字段。我已经能够创建所有重复值的列表,一个值出现次数的列表,表格上的新列,如果重复值,则为“Y”,但是仍然能够删除重复字段值,同时保留行中的所有其他内容。

1 个答案:

答案 0 :(得分:0)

由于您有重复ASSETID的列表,因此您可以使用ArcPy UpdateCursor仅修改该属性。

with arcpy.da.UpdateCursor(feature_class, ["ASSETID"]) as cursor:
    for row in cursor:
        if row[0] in unique_id_list:   # if the ASSETID is in the list
            row[0] = None
            cursor.updateRow(row)

这将修改具有ASSETID值的所有行,但不保留“原始”完整。您需要一份额外的原始列表(通过另一个唯一标识符,例如OBJECTID)并排除这些标识符,例如:

if row[0] in unique_id_list and row[1] not in original_id_list: