I am trying to assign values to a "K" field in an attribute table based on the "gridcode" values. However, I get this error:
"ERROR 999999: Error executing function. The value type is incompatible with the field type. [K] Failed to execute (CalculateField)"
This is my code:
def C(x):
if (x == 4260)and(x == 4252)and(x == 11110)and(x == 11817)and(x == 11857):
return 0.05
elif (x == 11705)and(x == 11711)and(x == 11730)and(x == 11765):
return 0.12
elif (x == 4265)and(x == 4267)and(x == 4284)and(x == 4414)and(x == 4464)and(x == 11052)and(x == 11767)and(x == 11771)and(x == 11772)and(x == 11775)and(x == 11779)and(x == 11780)and(x == 11783)and(x == 11786)and(x == 11791)and(x == 11793)and(x == 11796)and(x == 11798)and(x == 11799)and(x == 11801)and(x == 11807)and(x == 11809)and(x == 11810)and(x == 11811)and(x == 11814)and(x == 11815)and(x == 11819)and(x == 11821):
return 0.2
elif (x == 4324)and(x == 4325)and(x == 4396)and(x == 4486)and(x == 4491)and(x == 4494)and(x == 4499)and(x == 4502)and(x == 4522)and(x == 4527)and(x == 4544)and(x == 4552)and(x == 4587)and(x == 4588)and(x == 6651)and(x == 11013)and(x == 11366)and(x == 11368)and(x == 11369)and(x == 11535)and(x == 11766)and(x == 11770)and(x == 11773)and(x == 11777)and(x == 11782)and(x == 11784)and(x == 11785)and(x == 11787)and(x == 11788)and(x == 11789)and(x == 11790)and(x == 11792)and(x == 11794)and(x == 11795)and(x == 11797)and(x == 11800)and(x == 11804)and(x == 11805)and(x == 11806)and(x == 11808)and(x == 118012)and(x == 11816)and(x == 11818)and(x == 11830)and(x == 11868):
return 0.21
elif (x == 4408)and(x == 11841)and(x == 11843)and(x == 11847):
return 0.24
elif (x == 4383)and(x == 11108)and(x == 11367)and(x == 11371)and(x == 11375)and(x == 11376)and(x == 11378)and(x == 11404)and(x == 11413)and(x == 11416)and(x == 11423)and(x == 11539)and(x == 11540)and(x == 11708)and(x == 11710)and(x == 11714)and(x == 11719)and(x == 11721)and(x == 11723)and(x == 11724)and(x == 11725)and(x == 11839)and(x == 11840)and(x == 11842)and(x == 11844)and(x == 11846)and(x == 11851):
return 0.26
elif (x == 11551):
return 0.28
elif (x == 4261)and(x == 4264)and(x == 4393)and(x == 11000)and(x == 11014)and(x == 11020)and(x == 11035)and(x == 11086)and(x == 11087)and(x == 11111)and(x == 11262)and(x == 11341)and(x == 11377)and(x == 11388)and(x == 11604)and(x == 11605)and(x == 11627)and(x == 11645)and(x == 11663)and(x == 11668)and(x == 11727)and(x == 11826)and(x == 11827)and(x == 11828)and(x == 11831)and(x == 11858)and(x == 11864)and(x == 11865)and(x == 11869)and(x == 11879)and(x == 11880)and(x == 11883)and(x == 11909)and(x == 11914):
return 0.34
elif (x == 11103)and(x == 11916):
return 0.37
else:
return "NULL"
I also attach a screenshot of the field calculator screen for more clarity.
"NULL"
, which is likely causing the incompatible field issue. If you want NULL in the table, you should return PythonNone
.