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.

Agregación de Pandas Dataframe

Tengo el siguiente dataframe (aquí no incluí un índice, pero obviamente también hay un índice)

ID1 ID2 Count
55 62 1000
62 55 1200

Ahora me gustaría agregar esas dos columnas, ya que no me importa si la ID está en la columna ID1 o en la columna ID2.

Me gustaría obtener el siguiente resultado:

ID1 ID2 Count
55 62 2200
62 55 2200

Esto significa que quiero sumar la columna Count sobre todas las filas en mi dataframe donde las dos ID son iguales (no importa si están en la columna ID1 o en la columna ID2).

Pensé en agrupar el dataframe, pero eso no funcionó correctamente.

¡Agradezco cualquier ayuda!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, puedes utilizar el método groupby y la función de agregación sum.

    Primero, puedes crear una nueva columna que contenga los IDs ordenados de forma ascendente utilizando el método apply:

    df['IDs'] = df[['ID_1', 'ID_2']].apply(sorted, axis=1).apply(tuple)
    

    Luego, puedes agrupar el dataframe por la columna IDs y aplicar la función sum a la columna Count:

    result = df.groupby('IDs').agg({'Count': 'sum'}).reset_index()
    

    Finalmente, puedes renombrar las columnas para que coincidan con el dataframe original:

    result = result.rename(columns={'IDs': 'ID_1', 'Count': 'ID_2'})
    result = result[['ID_1', 'ID_2', 'Count']]  # reordenar columnas
    

    El dataframe resultante tendrá la agregación deseada de la columna Count basada en los IDs coincidentes:

    ID_1 ID_2 Count
    55 62 2200

Comments are closed.