2 votos

Script en Python para rellenar valores <Null> con el valor anterior en un campo

Tengo una tabla (dentro de una Geodatabase de archivos) que tiene el siguiente aspecto:

enter image description here

Necesito que los valores del atributo Propietario se rellenen automáticamente con el valor anterior no nulo. Como tal:

enter image description here

¿Existe un script de Python, utilizable en Field Calculator, que pueda lograr esto?

6voto

David Holm Puntos 6165

Puede hacerlo directamente dentro de la herramienta CalculateField; utilice el siguiente bloque de código:

prevval = None

def calcowner(ownerval):
    global prevval
    val = prevval if ownerval is None else ownerval
    prevval = val
    return val

Y la expresión:

calcowner(!Owner!)

Tenga en cuenta que esto probablemente no funcionará en ArcGIS 10.0 debido a un error que fue corregido en 10.1, pero 10.1+ debería ser bueno:

NIM059424 - Los valores nulos en la clase de características no se reemplazan cuando se utiliza Python en la calculadora de campos.

1voto

Hameno Puntos 129

Esto se puede hacer con una función personalizada del parser de python como

Aquí evaluamos si el valor es NULL o no, si no escribe el valor en el archivo de texto, si es NULL saca el valor del archivo de texto:

def update(val):
  if val:
    f = open('C:/Temp/temp.txt','w')
    f.write(val)
    f.close()
    return val
  else:
     f = open('C:/Temp/temp.txt','r')
     for v in f:
         return v
     f.close()

Y añadir la llamada a la función en el cuadro de texto debajo de la pre lógica:

update(!theFieldName!)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X