Estoy tratando de transformar un campo de fecha como "00:05:40"
en un campo entero (es decir, 340 segundos). ¿Alguien sabe cómo puedo hacer esa conversión, por favor?
Respuestas
¿Demasiados anuncios?Puedes usar arcpy ActualizarCursor para actualizar su campo.
Resumen
La función UpdateCursor crea un cursor que permite actualizar o eliminar filas en la clase de característica, archivo shape o tabla especificados. El cursor cursor coloca un bloqueo en los datos que permanecerá hasta que el script finalice o se elimine el objeto cursor de actualización.
Sintaxis
UpdateCursor (dataset, {where_clause}, {spatial_reference}, {fields}, {campos_ordenados})
import arcpy
rows = arcpy.UpdateCursor("C:/myData.gdb/times")
for row in rows:
date = row.DATE # 00h05min40sec
dat = date.split('h')
hour = dat[0] # 00
min = dat[1].split('min')[0] # 05
sec = dat[1].split('min')[1].split('sec')[0] # 40
newDate = hour * 3600 + min * 60 + sec # 340
row.DATE = newDate
rows.updateRow(row)
del row
del rows
Espero que te ayude...
Si no te sientes cómodo con arcpy, también puedes hacerlo a través de la herramienta Calculadora de campo o Calcular campo. Tienes que activar la opción Codeblock y definir una función como esta:
def int_from_date(timestamp):
hour = int(timestamp[0:2])
min = int(timestamp[3:5])
sec = int(timestamp[6:8])
time_secs = hour * 3600 + min * 60 + sec
return time_secs
Y luego introduzca lo siguiente como Expresión (asegúrese de que el Tipo de Expresión/Parser es Python, no VB):
int_from_date(!DATE_FIELD!)