2016-03-22 12 views
1

属性表の最初の4行の値をarcpyを使用して属性表の次の4行5:8の行の値に置き換えようとしています。 da.UpdateCursor。行1:4(すべての列)を索引付けし、行5:8の値で置き換える簡単な方法はありますか?ここで最初の4行を5: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