5 votos

Cálculo de un nuevo campo con condiciones

Estoy luchando con el cálculo de un nuevo campo que se basa en otro campo.

Tengo un campo con los números que aparecen dos veces ("Field_A") y tengo que calcular un nuevo campo ("Field_B") que tiene el valor de -90 cuando un número aparece en el primer tiempo y el valor de 90 cuando el mismo número aparece el segundo tiempo.

Attribute_table

Estoy trabajando con ArcGIS 10.6. Creo que es necesario un bloque de código Python.

4voto

Anton8000 Puntos 165

Si los datos se ve como la captura de pantalla que no es necesario el uso de Field_A, Field_B sólo necesita ser llenado con -90,90,-90,90 etc.. Intente esto en la Ventana de Python de ArcGIS:

import arcpy
fc = r'C:\data.gdb\feature_class' #Change
field = 'Field_B'

givemenumbers = iter([-90,90]*1000000)
with arcpy.da.UpdateCursor(fc,field) as cursor:
    for row in cursor:
        row=next(givemenumbers)
        cursor.updateRow(row)

Si no funciona esto, con cualquier número y el orden de Field_A valores. Los Pandas cumcount será el número de cada elemento en cada grupo, y el 90 o 90 se calcula en función par o impar de numeración utilizando if/else con la comprensión de listas:

import arcpy
import pandas as pd
fc = 'Pointsample' #Change
field_a = 'Field_A' #Change
field_b = 'Field_B' #Change

df = pd.DataFrame.from_records(data=arcpy.da.SearchCursor(fc,field_a), columns=[field_a])
values = iter([-90 if v%2==0 else 90 for v in df.groupby(field_a).cumcount().tolist()])

with arcpy.da.UpdateCursor(fc,field_b) as cursor:
    for row in cursor:
        row=[next(values)]
        cursor.updateRow(row)

enter image description here

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