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 dividir las filas con respecto a la fecha?

Tengo una tabla como esta:

d = {
    "person_id" : [10,10,10,10,20,20],
    "type" : ["Exit", "Enter", "Exit", "Enter", "Exit", "Enter"],
    "exit_date": ["2022-01-01", "2022-01-02", "2022-01-05", "2022-01-07", "2022-02-01", "2022-02-05"]
}
pd.DataFrame(d)

Quiero convertir el DataFrame en esto:

d = {
    "person_id": [10, 10, 20],
    "Exit": ["2022-01-01", "2022-01-05", "2022-02-01"],
    "Enter": ["2022-01-02", "2022-01-07", "2022-02-05"]
}
pd.DataFrame(d)

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para convertir el marco de datos dado en el formato deseado, podemos utilizar la función pivot_table de pandas.

    import pandas as pd
    
    d = {
        "person_id" : [10,10,10,10,20,20],
        "type" : ["Exit", "Enter", "Exit", "Enter", "Exit", "Enter"],
        "exit_date": ["2022-01-01", "2022-01-02", "2022-01-05", "2022-01-07", "2022-02-01", "2022-02-05"]
    }
    df = pd.DataFrame(d)
    
    # pivoteamos la tabla
    result = df.pivot_table(index='person_id', columns='type', values='exit_date', aggfunc='first')
    
    print(result)
    

    Salida:

    type             Enter        Exit
    person_id                         
    10          2022-01-02  2022-01-01
    20          2022-02-05  2022-02-01
    

    Esto creará un nuevo marco de datos donde person_id se convierte en el índice y type ahora se convierte en encabezados de columna. Los valores en la nueva tabla se llenan con exit_date. El parámetro aggfunc se utiliza para especificar cómo se deben agregar múltiples valores de exit_date para la misma persona y tipo, en este caso estamos usando ‘first’ para mantener la fecha más temprana.

Comments are closed.