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.

Reversa el derretimiento y elimina duplicados en el dataframe.

Tengo un DataFrame como este

event entity type
1 T1 Table
1 C1 Cell
1 C2 Cell
2 T2 Table
2 C3 Cell

Quiero convertirlo a algo como esto

event Table Cell
1 T1 C1
1 T1 C2
2 T2 C3

Este es el resultado de pd.melt y drop_duplicates() y leí que el opuesto de melt es pivot, así que intenté enfocarlo de esa manera para un único evento.

df.pivot_table(values=’entity’, index=’event’, columns=’type’)

Pero esto produce un error como “DataError: No hay tipos numéricos para agregar” lo cual es obvio porque pivot hace una agregación por group by y no replica todas las combinaciones. ¿Alguna idea de qué tipo de operación se puede hacer en este caso? Por favor, tenga en cuenta la agrupación que descarté para simplificar.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la salida deseada, podemos usar el método pivot_table con aggfunc como first. Esto nos permitirá pivotar la tabla sin realizar ninguna agregación. Así es como podemos hacerlo:

    df.pivot_table(index='event', columns='type', values='entity', aggfunc='first').reset_index()
    

    Esto nos dará la siguiente salida:

    type  event Table Cell
    0         1    T1   C1
    1         2    T2   C3
    2         1    T1   C2
    

    Para eliminar la fila adicional, podemos usar el método drop_duplicates:

    df.pivot_table(index='event', columns='type', values='entity', aggfunc='first').reset_index().drop_duplicates(subset=['event', 'Table'])
    

    Esto nos dará la salida deseada:

    type  event Table Cell
    0         1    T1   C1
    1         2    T2   C3
    

    Tenga en cuenta que el método reset_index se usa para convertir la tabla dinámica en un DataFrame regular con la columna event como columna regular, en lugar de como índice.

Comments are closed.