2016-03-22 18 views
1

我嘗試用屬性表中的下一行4行5:8中的行值替換屬性表的前4行中的值,使用arcpy屬性表中的值。 da.UpdateCursor。有沒有簡單的方法來索引行1:4(所有列),並用行5:8中的值替換。用行5中的值替換前4行:8 arcpy

這裏是我的代碼至今:

targetFC = r"D:\ZOC\POLYPGDIS_MASTER_1.shp" 

dsc = arcpy.Describe(sourceFC) 
fields = dsc.fields 

# List all field names except the OID field 

fieldnames = [field.name for field in fields if field.name != dsc.OIDFieldName] 

with arcpy.da.UpdateCursor(targetFC, fieldnames) as cursor: 
for row in cursor: 
    row[1:4] = row[5:8] 
    cursor.updateRow(row) 

感謝

+0

你能否提供一個你想要完成的例子? – Borealis

回答

1

我認爲最簡單的方法是將數據加載到一個列表。 請注意,如果您正在使用RDBMS,行順序不確定,所以這可能無法工作,除非您按某種方式排序。

eight_rows = [] 
k = 0 
with arcpy.da.SearchCursor(targetFC, fieldnames) as rows: 
    for row in rows: 
     eight_rows.append(row) 
     k += 1 
     if k == 8: break 
k = 5 
with arcpy.da.UpdateCursor(targetFC, fieldnames) as rows: 
    for row in rows: 
     row = eight_rows[k] 
     k += 1 
     rows.updateRow(row) 
     if k == 8: break