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?
Respuesta
¿Demasiados anuncios?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: