I have been combing the help associated with (None) values in arc, and have not been able to solve the following problem:
I have a a field with mixed Null and integer values:
0 100
I would like to transform the null values to 0's in python:
cursor = arcpy.UpdateCursor(fishJoin, ['myField']):
for row in cursor:
if row is None:
row = 0
cursor.updateRow(row)
This does not alter any of the null values.
I'm using ArcGIS Desktop 10.0.
1 Answer 1
I would recommend using the data access module da
with the Update Cursor as you will notice significant performance improvements. The following is the correct syntax to replace <Null>
(aka None
) values with 0.
import arcpy
fc = r'C:\path\to\your\FGDB.gdb\andFC'
with arcpy.da.UpdateCursor(fc, ["Field_Name"]) as cursor:
for row in cursor:
if row[0] == None:
row[0] = 0
cursor.updateRow(row)
print "Processing complete"
The following is the correct syntax for ArcGIS 10.0 (i.e. without the da
module).
import arcpy
fc = r'C:\path\to\your\FGDB.gdb\andFC'
cursor = arcpy.UpdateCursor(fc)
for row in cursor:
if row.YourFieldName == None:
row.YourFieldName = 0
cursor.updateRow(row)
print "Processing complete"
del row
-
This script runs for me but does not end up changing the attribute. My attribute is not a <Null> value but rather empty (i.e. '') It prints "Processing Complete" but does not updated the value. Here is my code:
import arcpy fc = r'D:\_data\sidewalk.gdb\repairs' cursor = arcpy.UpdateCursor(fc) for row in cursor: if row.FixedBy == None: row.YourFieldName = 'Contractor' cursor.updateRow(row) print "Processing complete" del row
cbunn– cbunn2017年06月08日 13:31:18 +00:00Commented Jun 8, 2017 at 13:31 -
@cbunn I would urge you to open a new question. It is difficult to understand your code in the comments.2017年06月08日 13:37:55 +00:00Commented Jun 8, 2017 at 13:37
-
Sorry, it is its own question now here: gis.stackexchange.com/questions/243256/…cbunn– cbunn2017年06月08日 13:39:50 +00:00Commented Jun 8, 2017 at 13:39