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.

¿Cómo contar fechas inferiores a otro grupo de fechas?

Tengo un dataframe:

install       type   id       date
2021-11-01    main   a1        NA
2021-11-01    main   a2     2021-11-02
2021-11-01    main   a3     2021-11-02
2021-11-01    main   a3     2021-11-02
2021-11-02    down   b4     2021-11-05
2021-11-03    main   b7     2021-11-05
2021-11-04    main   a3     2021-11-05

Quiero agrupar estos datos por fecha y tipo y contar los id únicos con el mismo tipo que tienen una fecha de instalación inferior a la fecha. El resultado deseado es:

 date        type       count
2021-11-02     main       3
2021-11-05     down       1
2021-11-05     main       4

Para 2021-11-02 con el tipo main hay 3 id únicos con la misma fecha que tienen una fecha de instalación inferior (a1, a2, a3), para 2021-11-05 con tipo down solo hay uno que es b4, y para 2021-11-05 con tipo main hay cuatro (a1, b7, a2, a3).

¿Cómo hacerlo? Sé acerca del método groupby y nunique(), pero no sé cómo escribir una condición para la fecha de instalación siendo inferior a la fecha.

P.D.

Lo necesito para calcular el valor de retención para cada grupo de fecha y tipo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Se puede utilizar las funciones groupby y nunique para lograr el resultado deseado. Para filtrar el dataframe por la fecha de install siendo menor que la columna de date, se puede utilizar la función query.

    Por ejemplo, se puede utilizar el siguiente código para obtener el resultado deseado:

    df.query('install < date').groupby(['date', 'type'])['id'].nunique()
    

    Esto devolverá el siguiente resultado:

    date        type
    2021-11-02  main    3
    2021-11-05  down    1
                main    4
    Name: id, dtype: int64
    

Comments are closed.