Python syntax returning only part of the if/elif statement in Field Calculator?

by kent   Last Updated August 01, 2020 08:22 AM - source

Using ArcGIS 10.7 desktop.

I want to reclassify a land use field using Field Calculator. Grasslands are conditionally reclassified using a 'veg_type' field (Avena, or Bromus) and a CWHR land use field (grassland values = Annual Grassland, AGS, Perennial Grassland). All other values in the CWHR field should stay the same.

When I run the Python Parser syntax the Grassland_Reclass field returns "Avena Grassland" (gridcode = 1) for the assigned land use values, but also for grasslands categorized as "Bromus' (gridcode = 0). The default CWHR values are added, but the elif condition (gridcode = 0) is not returned. I've also tried with the veg_type field but I get the same result.

def Reclass(gridcode, CWHR_TYPE):
  if gridcode == 1 and CWHR_TYPE == "Annual Grassland" or CWHR_TYPE == "AGS" or CWHR_TYPE == "Perennial Grassland":
    return "Avena Grassland"
  elif gridcode == 0 and CWHR_TYPE == "Annual Grassland" or CWHR_TYPE == "AGS" or CWHR_TYPE == "Perennial Grassland":
    return "Bromus Grassland"  
  else:
    return CWHR_TYPE

Expression: Grassland_Reclass =

Reclass(!gridcode!, !CWHR_TYPE!)

enter image description here



Related Questions





Count the number of characters in a field (Python)

Updated February 22, 2016 01:09 AM