"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo mantener otras columnas en un Pandas DataFrame durante una operación de grupo?

¿Cómo puedo mantener otras columnas en un Pandas DataFrame durante una operación de grupo?

Publicado el 2024-11-08
Navegar:764

How can I maintain other columns in a Pandas DataFrame during a groupby operation?

Mantener otras columnas durante las operaciones de agrupación

Al realizar una operación de agrupación en un marco de datos de pandas, a menudo es necesario conservar las columnas que no involucrados en el proceso de agrupación o agregación. De forma predeterminada, estas otras columnas se eliminan cuando se completa la operación. Esto puede resultar problemático si las columnas retenidas contienen información valiosa.

Considere el siguiente marco de datos:

    item    diff   otherstuff
   0   1       2            1
   1   1       1            2
   2   1       3            7
   3   2      -1            0
   4   2       1            3
   5   2       4            9
   6   2      -6            2
   7   3       0            0
   8   3       2            9

Si agrupamos el marco de datos por la columna "elemento" y encontramos el valor mínimo de la columna "diff", el marco de datos resultante se vería así:

    item   diff
   0   1      1           
   1   2     -6           
   2   3      0                 

Observe que la columna "otras cosas" se ha eliminado. Para conservar esta columna, podemos usar el método idxmin() para obtener los índices de los elementos de diferencia mínima y luego seleccionarlos:

>>> df.loc[df.groupby("item")["diff"].idxmin()]
   item  diff  otherstuff
1     1     1           2
6     2    -6           2
7     3     0           0

[3 rows x 3 columns]

Otro método es ordenar el marco de datos por la columna "diff" y luego tomar el primer elemento de cada grupo de elementos:

>>> df.sort_values("diff").groupby("item", as_index=False).first()
   item  diff  otherstuff
0     1     1           2
1     2    -6           2
2     3     0           0

[3 rows x 3 columns]

Ambos métodos producirán el resultado deseado, conservando la columna "otras cosas". Tenga en cuenta que los índices resultantes pueden ser diferentes aunque el contenido de la fila sea el mismo.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3