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

Posted

技术标签:

【中文标题】删除(使 null)重复的字段值【英文标题】:Delete (make null) duplicate field values 【发布时间】:2017-04-14 19:33:39 【问题描述】:

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

【问题讨论】:

我认为你应该在 Geographic Information Systems Stack Exchange 上研究/询问这个问题。 【参考方案1】:

由于您有一个重复的ASSETIDs 列表,您可以使用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:

【讨论】:

以上是关于删除(使 null)重复的字段值的主要内容,如果未能解决你的问题,请参考以下文章

Mysql查询某字段重复值并删除重复值

将 Solr 重复值删除到多值字段中

数据库部分(MySql)_4

MySQL查询从字段中删除重复值[重复]

sql查询表中字段名和数据

sql语句 删除某字段中一个数据