3 votos

¿Poblar el campo Atributo utilizando código Python sin copiar sobre filas nulas?

Estoy intentando copiar los valores de una columna de mi tabla de atributos (!roomName!) a otra columna (!spaceDiscriminator!). Entiendo cómo hacer un fácil campo calc over para todos los valores, pero el problema es, sólo quiero que las filas en !roomName! que tienen valores para copiar. Si !roomName! contiene una fila nula, no quiero que se copie, sino que el valor original de !spaceDiscriminator! permanezca y no se edite. No puedo averiguar cómo hacer esto adecuadamente. He adjuntado mi código a continuación:

En el primer enunciado if he probado muchos escenarios alternativos. If x == None: parece ser el que selecciona con precisión los campos Nulos que no quiero copiar. return None edita el campo !spaceDiscriminator! sin embargo. He intentado usar continue pero me da error. ¿Existe alguna sentencia simple que pueda utilizar y que básicamente diga "si el valor es none/Null continúe en la siguiente fila y deje el valor original de !spaceDiscriminator!

enter image description here

5voto

John Kramlich Puntos 286

El código que buscas sería algo como esto:

testme(!roomname!,!spaceddiscriminator!)

def testme(x,y):
  if x is None:
    return y
  else:
    return x

Como puedes ver puedes pasar más de un valor de campo a tu función, en tu caso el valor del mismo campo que estás actualizando.

3voto

obrl_soil Puntos 53

Sólo tiene que seleccionar por atributos donde [RoomName] no sea nulo y, a continuación, realizar un cálculo sencillo. Sólo debería operar en las filas seleccionadas.

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