2 votos

¿Seleccionar números dentro de la barra (/) utilizando la calculadora de campos de ArcMap?

Tengo datos de fecha que estoy separando en tres campos separados (todos los campos son de tipo cadena, incluyendo el campo de entrada) por día, mes y año. Desafortunadamente, el campo de fecha es un dato sin procesar y no es consistente; hay ocho variaciones de cómo se organizan los datos en este campo (d/m/aa; d/m/aa; d/mm/aa; d/mm/aa; dd/m/aa; dd/mm/aa; dd/mm/aa). He descubierto cómo separar el día y el año en columnas separadas, pero tengo dificultades para separar el mes. He probado la función Mid() de VB Script separando inicialmente los diferentes formatos y realizando la función, pero eso ha sido extremadamente lento, y tengo cerca de 100.000 puntos de datos que necesito revisar. ¿Existe un código python que pueda utilizar, o una combinación de diferentes scripts VB, que pueda seleccionar los números entre las barras (/) para todos estos? ¿O estoy condenado?

4voto

Örjan Jämte Puntos 3127

En la calculadora de campo, tendrá que ejecutar 3 Calculate Field operaciones:

En pseudocódigo:

day_field = !str_field!.split("/")[0]
month_field = !str_field!.split("/")[1]
year_field = !str_field!.split("/")[2]

Con los cursores, esto es un poco más sencillo (y debe sea más rápido) ya que se puede reducir a sólo iterar sobre str_field una vez:

fields = [str_field, day_field, month_field, year_field]
with arcpy.da.UpdateCursor(FC, fields) as rows:
     for row in rows:
         #only use the first 3 in case there is a 4th slash for some reason
         row[1:] = row[0].split("/")[0:3] 
         rows.updateRow(row)

Esto es lo que parece en la calculadora de campo:

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