Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

145
Vistas
Obtenga valores mínimos y máximos de variable categórica en un marco de datos

Tengo un marco de datos que se ve así:

 DXYZ A 22 16 23 A 21 16 22 A 20 17 21 B 33 50 11 B 34 53 12 B 34 55 13 C 44 34 11 C 45 33 11 C 45 33 10 D 55 35 60 D 57 34 61 E 66 36 13 E 67 38 14 E 67 37 13

Quiero obtener los valores mínimo y máximo de la variable categórica D en todos los valores de columna, por lo que el marco de datos de salida debería verse así:

 D Xmin Xmax Ymin Ymax Zmin Zmax A 20 22 16 17 21 23 B 33 34 50 55 11 13 C 44 45 33 34 10 11 D 55 57 34 35 60 61 E 66 67 36 38 13 14

He intentado esto, pero sin suerte:

 min_max_df = dfObj.groupby('D').agg({'X': [dfObj.min(axis=0), dfObj.max(axis=0)]})
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

from itertools import product aggs = {f"{col}{fn}": (col, fn) for col,fn in product(['X', 'Y', 'Z'], ['min', 'max'])} df.groupby('D').agg(**aggs) >>> Xmin Xmax Ymin Ymax Zmin Zmax D A 20 22 16 17 21 23 B 33 34 50 55 11 13 C 44 45 33 34 10 11 D 55 57 34 35 60 61 E 66 67 36 38 13 14
over 4 years ago · Santiago Trujillo Denunciar

0

df = df.groupby('D').agg(['min', 'max'])

Producción:

 >>> df XYZ min max min max min max DA 20 22 16 17 21 23 B 33 34 50 55 11 13 C 44 45 33 34 10 11 D 55 57 34 35 60 61 E 66 67 36 38 13 14 >>> df['X']['min'] D A 20 B 33 C 44 D 55 E 66 Name: min, dtype: int64

También puede aplanar las columnas:

 df.columns = df.columns.map(''.join) df.rename_axis(None) Xmin Xmax Ymin Ymax Zmin Zmax A 20 22 16 17 21 23 B 33 34 50 55 11 13 C 44 45 33 34 10 11 D 55 57 34 35 60 61 E 66 67 36 38 13 14
over 4 years ago · Santiago Trujillo Denunciar

0

Creo que esta es una buena manera de hacerlo y en una sola línea de código. Haciendo uso de join haciendo la operación por índice y el rsuffix r y el sufijo lsuffix para diferenciar min y max.

 output = df.groupby('D').min().join(df.groupby('D').max(), lsuffix='min', rsuffix='max')

Salidas:

 Xmin Xmax Ymin Ymax Zmin Zmax D A 20 22 16 17 21 23 B 33 34 50 55 11 13 C 44 45 33 34 10 11 D 55 57 34 35 60 61 E 66 67 36 38 13 14
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda