尝试用光标更改字段中的值

2024-09-22 16:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在尝试将列中的值从shapefile更改为使用新值创建新字段/列。我们尝试使用搜索和更新游标以及for循环和字段计算器来实现这一点。有没有人知道如何以一种简单的方式来实现这一点?

下面是我们的脚本示例,我们尝试将列中标记为“Montane\u Chaparal”的所有项转换为新列中的新值“Dry\u Forest

veg = "Cal_Veg.shp"
field = ["WHRNAME"]

therows=arcpy.UpdateCursor(veg, field)

for therow in therows:
    if (therow.getValue(field)==" "):
        therow.setValue("Montane_Chaparral","Dry_Forest")
    therows.updateRow(therow)

print "Done."

我也尝试过:

veg = "Cal_Veg.shp"
with arcpy.da.SearchCursor(veg,["WHRNAME","NewVeg"]) as SCursor:
    for row in SCursor:
        if row[0] == "Montane Chaparral": 
            with arcpy.da.InsertCursor(veg,["NewVeg"]) as ICursor:
                for new_row in ICursor: 
                    NewVeg = "Dry Forest"
                    ICursor.insertRow(new_row)
print "done"

Tags: infieldforcalrowdryarcpyforest
1条回答
网友
1楼 · 发布于 2024-09-22 16:30:07

我绝对会推荐更现代的daUpdate Cursor用于您的脚本,原因有很多,但主要是为了速度和效率。你知道吗

看起来好像您不正确地运行了一个嵌套游标,而您只需要一个更新游标。试试这个。你知道吗

veg = "Cal_Veg.shp"

with arcpy.da.UpdateCursor(veg,["WHRNAME","NewVeg"]) as cursor:
    for row in cursor:
        if row[0] == "Montane Chaparral": # row[0] references "WHRNAME"
            row[1] = "Dry Forest"         # row[1] references "NewVeg"
        cursor.updateRow(row) 

print "done"

相关问题 更多 >