import arcpy from arcpy import env env.workspace = r"C:\Users\cc1\Desktop\NEW.gdb\WAYNE" table = "WAYNE" list = [] with arcpy.da.SearchCursor(table, ["FULL_ADDRESS_NAME"]) as cursor: for row in cursor: list.append(row[0]) del row, cursor with arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME","FEAT_SEQ"]) as updateRows: for updateRow in updateRows: nameValue = updateRow[0] if nameValue in list: updateRow[1] = lutDict[nameValue] updateRows.updateRow(updateRow) del updateRow, updateRows
Solved! Go to Solution.
import arcpy
from arcpy import env
env.workspace = r"C:\Users\cc1\Desktop\NEW.gdb\WAYNE"
table = "WAYNE"
uniqueValues = {}
values = []
newID = 1
with arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME","FEAT_SEQ"]) as updateRows:
    for row in updateRows:
        nameValue = row[0]
        values.append(nameValue)
        if nameValue in uniqueVals:
            row[1] = uniqueValues[[nameValue]]
        else:
            newID += 1
            uniqueValues[nameValue] = [newID]
            row[1] = newID
        updateRows.updateRow(row)
            
del row
del updateRows
uniqueCount = {}
for val in uniqueValues:
    uniqueCount[val] = values.count(val)
with arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME", "FREQ"]) as updateRows:
    for row in updateRows:
        nameValue = row[0]
        count = uniqueCount[nameValue]
        row[1] = count
        updateRows.updateRow(row)
        
del row
del updateRows
values = [row[0] for row in arcpy.da.SearchCursor(table, ("FULL_ADDRESS_NAME"))]
import arcpy
from arcpy import env
env.workspace = r"C:\Users\ccooper\Desktop\DATA.gdb\WAYNE"
table = "WAYNE"
uniqueValues = {}
values = [row[0] for row in arcpy.da.SearchCursor(table, ("FULL_ADDRESS_NAME"))]
newID = 0
with arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME","FEAT_SEQ"]) as updateRows:
    for row in updateRows:
        nameValue = row[0]
        if nameValue in uniqueValues:
            row[1] = uniqueValues[nameValue]
        else:
            newID += 1
            uniqueValues[nameValue] = newID
            row[1] = newID
        updateRows.updateRow(row)
            
del row, updateRows
uniqueCount = {}
for val in uniqueValues:
    uniqueCount[val] = values.count(val)
with arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME", "FREQ_NAME"]) as updateRows:
    for row in updateRows:
        nameValue = row[0]
        row[1] = uniqueCount[nameValue]
        updateRows.updateRow(row)
        
del row, updateRows
Summary statistics is written in C++. It will be significantly faster than any Python solution.
import arcpy, time
myFC = r"C:\my_fgdb.gdb\my_fc"
statDict = {}
statField = "OID@"
caseField = "ELEV"
time1 = time.clock()
searchRows = arcpy.da.SearchCursor(myFC, [statField,caseField])
for searchRow in searchRows:
   statValue, caseValue = searchRow
   if caseValue in statDict:
      statDict[caseValue].append(statValue)
   else:
      statDict[caseValue] = [statValue]
sumDict = {}
for caseValue in statDict:
   sumDict[caseValue] = len(statDict[caseValue]), max(statDict[caseValue])
time2 = time.clock()In addition, the ESRI Summary Statistics tool (and ther Frequency tool) give incorrect results in the output table when the case field values are either NULL or 0. Which was a bug that got fixed a long time ago, but seems to be back (at least in v10.1 SP1).
As a solution to little issues like this, I too have a little collection of Python-based code/tools I have written over the years that are either bug work arounds or major performace enhancments for some of the out of the box geoprocessing tools.
myFC = r"C:\my_fgdb.gdb\my_fc" valueSet = set([r[0] for r in arcpy.da.SearchRows(myFC, ["ORIG_ID"])]) valueList = list(valueSet) valueList.sort() arcpy.AddField_managment(myFC, "SEQ_ID", "LONG") updateRows = arcpy.da.UpdateCursor(myFC, ["ORIG_ID","SEQ_ID"]) for updateRow in updateRows: updateRow[1] = valueList.index(updateRow[0]) + 1 updateRows.updateRow(updateRow) del updateRow, updateRows
import arcpy, collections myFC = r"C:\my_fgdb.gdb\my_fc" valueList = [r[0] for r in arcpy.da.SearchRows(myFC, ["ORIG_ID"])] valueDict = collections.Counter(valueList) uniqueList = valueDict.keys() uniqueList.sort() #if you want SEQ_ID to be sorted numeric or alphabetic arcpy.AddField_managment(myFC, "SEQ_ID", "LONG") arcpy.AddField_managment(myFC, "COUNT", "LONG") updateRows = arcpy.da.UpdateCursor(myFC, ["ORIG_ID","SEQ_ID","COUNT"]) for updateRow in updateRows: updateRow[1] = uniqueList.index(updateRow[0]) + 1 updateRow[2] = valueDict[updateRow[0]] updateRows.updateRow(updateRow) del updateRow, updateRows