es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionar pares de fecha y hora donde la diferencia de tiempo sea de un minuto o menos.

Estoy utilizando excel con C#.
Tengo dos listas de fecha y hora en excel.
El objetivo es seleccionar pares de fecha y hora de ambas listas donde la diferencia de tiempo sea menor o igual a 1 minuto.

De la imagen de arriba, T1 vendrá con aquellos valores de la Lista de Tiempo2 donde la diferencia entre T1 y cualquier (TA o TB o TC, etc.) está dentro de 1 minuto.

Digamos que la diferencia entre T1 y (TC y TA) califica. Entonces los pares serán: T1/TC y T1/TA

Dado que ambas listas son bastante largas, estoy tratando de evitar el bucle ‘for’.

¿Hay alguna forma fácil de lograr esto?

¡¡Muchas gracias!!

Nota: ¿Se puede lograr esto en otro lenguaje? Estoy familiarizado con python y oracle y trataré de entender si es posible una solución en cualquier otro lenguaje.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, esto se puede lograr utilizando C# y fórmulas de Excel. Puedes utilizar las fórmulas INDICE y COINCIDIR para encontrar los valores que cumplan el criterio de tener una diferencia de tiempo de menos de o igual a 1 minuto. Aquí tienes un ejemplo de fórmula que puedes utilizar:

    =SI.ERROR(INDICE(Lista_Fechas_Hora2, COINCIDIR(VERDADERO, ABS(Lista_Fechas_Hora2-T1)<=1/1440, 0)), "")

    Esta fórmula devolverá el valor de Lista_Fechas_Hora2 que está dentro de 1 minuto de T1. Luego puedes copiar esta fórmula hacia abajo en la columna para encontrar todos los valores coincidentes. Repite el mismo proceso para todos los demás valores de tiempo en Lista_Fechas_Hora1.

    Alternativamente, si te sientes cómodo/a con Python, puedes utilizar la biblioteca Pandas para leer los datos de Excel y realizar los cálculos. Aquí tienes un ejemplo de fragmento de código:

    import pandas as pd
    
    # Leer los datos de Excel
    df = pd.read_excel('archivo.xlsx')
    
    # Crear un nuevo DataFrame con todas las combinaciones de valores de tiempo
    combinaciones = pd.merge(df['Lista_Fechas_Hora1'].to_frame(), df['Lista_Fechas_Hora2'].to_frame(), how='cross', suffixes=('_1', '_2'))
    
    # Filtrar las combinaciones con una diferencia de tiempo de menos de o igual a 1 minuto
    combinaciones = combinaciones[(combinaciones['Lista_Fechas_Hora1'] - combinaciones['Lista_Fechas_Hora2']).abs() <= pd.to_timedelta(1, unit='minute')]
    
    # Imprimir las combinaciones resultantes
    print(combinaciones)
    

    Este código lee los datos de Excel y crea un nuevo DataFrame con todas las combinaciones de valores de tiempo. Luego filtra las combinaciones para aquellas que tienen una diferencia de tiempo de menos de o igual a 1 minuto. Finalmente, imprime las combinaciones resultantes.

Comments are closed.