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.

Python pandas | declaraciones condicionales triples

volumen precio fecha y hora
100 3 2021-09-29 04:00:00-04:00
900 2 2021-09-29 04:30:00-04:00
900 5 2021-09-29 05:30:00-04:00
500 9 2021-09-29 06:00:00-04:00
900 22 2021-09-29 06:30:00-04:00
900 1 2021-09-29 07:00:00-04:00

Lo que intento hacer: “entre el 2021-09-29 04:15:00-04:00 y el 2021-09-29 06:35:00-04:00, devuelva el precio con el volumen máximo. Si hay más de una fila/registro con el volumen máximo, entonces devuelva el precio más bajo de ellos (la salida esperada es 2).

Tengo lo siguiente pero no sé cómo anidar la declaración “entre” allí:

df[(df[‘fecha y hora’] >= ‘2021-09-29 04:15:00-04:00’) & (df[‘fecha y hora’] <= ‘2021-09-29 06:35:00-04:00’) & (df[‘volumen’] == df[‘volumen’].max())][‘precio’].min()

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la salida esperada para el escenario dado, el código debería modificarse de la siguiente manera:

    df[(df.datetime >= '2021-09-29 04:15:00-04:00') &
       (df.datetime <= '2021-09-29 06:35:00-04:00') &
       (df.volume == df.loc[(df.datetime >= '2021-09-29 04:15:00-04:00') &
                            (df.datetime <= '2021-09-29 06:35:00-04:00'),
                            'volume'].max())].price.min()
    

    El código anterior filtra el DataFrame para el rango de fecha y hora deseado y las filas con el volumen máximo dentro de ese rango, y luego devuelve el precio mínimo de esas filas. La función loc se utiliza para seleccionar el volumen máximo solo del rango de fecha y hora deseado.

Comments are closed.