2016-03-22 11 views
1

Ich versuche, die Werte in den ersten 4 Zeilen einer Attributtabelle durch die Zeilenwerte aus den nächsten 4 Zeilen 5: 8 in einer Attributtabelle mit arcpy zu ersetzen. da.UpdateCursor. Gibt es eine einfache Möglichkeit, Zeilen 1: 4 (alle Spalten) zu indizieren und durch Werte aus Zeilen 5: 8 zu ersetzen.Ersetze zuerst 4 Zeilen mit Werten aus Zeilen 5: 8 arcpy

Hier ist mein Code so weit:

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) 

Dank

+0

Könnten Sie bitte ein Beispiel dafür geben, was Sie erreichen möchten? – Borealis

Antwort

1

Ich denke, der einfachste Weg, um die Daten in eine Liste zu laden wäre. Hinweis: Wenn Sie mit einem RDBMS arbeiten, ist die Zeilenreihenfolge nicht sicher, daher würde dies wahrscheinlich nicht funktionieren, wenn Sie nicht nach etwas sortiert haben.

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