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

301
Vistas
¿Cómo contar los valores de columna en rangos en lugar de contenedores?

Estoy tratando de averiguar cómo contar cuidadosamente la cantidad de valores en una columna de marco de datos que se encuentran en múltiples rangos personalizados. Me doy cuenta de que el agrupamiento es la técnica común para esto, pero no estoy seguro de que sea lo que estoy buscando aquí.

Digamos que tengo el siguiente marco de datos:

 Date Value1 Value2 --------------------------------------- 0 4/15/2018 4 4 1 4/16/2018 4 3 2 4/17/2018 2 7 3 4/18/2018 4 3 4 4/19/2018 3 8 5 4/20/2018 9 4 6 4/21/2018 9 6 7 4/22/2018 8 3 8 4/23/2018 9 5 9 4/24/2018 9 5 10 4/25/2018 10 5 11 4/26/2018 15 2 12 4/27/2018 18 2 13 4/28/2018 17 3 14 4/29/2018 6 4 ...

Ahora, tengo tres rangos personalizados (todo incluido): 1 - 4, 7 - 10 y 13 - 20.

Quiero saber cuántos valores (o filas) de "Valor1" se encuentran dentro de cada uno de estos rangos. Si bien sé que el agrupamiento se puede usar como bins = [0,4,7,13,20] , esto no logra lo que estoy buscando, ya que intenta colocar/dividir cada valor en la columna en un contenedor. Solo quiero encontrar la cantidad de valores (filas) que se encuentran en mis rangos. Esto significa que no me importan los valores de 5, 6, 11, 12, 21, 22, 23, etc. Para comprender los resultados, necesitaría asignar etiquetas a mis rangos para que 1 - 4 esté etiquetado como "Rango 1", 7 - 10 está etiquetado como "Rango 2", y 13 - 20 está etiquetado como "Rango 3".

Y entonces estoy tratando de producir el siguiente marco de datos de salida:

 Date Value1 Value2 Range --------------------------------------------------- 0 4/15/2018 4 4 Range 1 1 4/16/2018 4 3 Range 1 2 4/17/2018 2 7 Range 1 3 4/18/2018 4 3 Range 1 4 4/19/2018 3 8 Range 1 5 4/20/2018 9 4 Range 2 6 4/21/2018 9 6 Range 2 7 4/22/2018 8 3 Range 2 8 4/23/2018 9 5 Range 2 9 4/24/2018 9 5 Range 2 10 4/25/2018 10 5 Range 2 11 4/26/2018 15 2 Range 3 12 4/27/2018 18 2 Range 3 13 4/28/2018 17 3 Range 3 14 4/29/2018 6 4 No_range

para que pueda producir el siguiente marco de datos de resumen:

 Range Frequency ---------------------------- 0 Range 1 5 1 Range 2 6 2 Range 3 3

¿Cómo podría lograrse esto en python?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

  1. Especifique los rangos usando Series. Series.between (que incluye ambos extremos por defecto)
  2. Genere la columna Range usando np.select
 ranges = { 'Range 1': df['Value1'].between(1, 4), 'Range 2': df['Value1'].between(7, 10), 'Range 3': df['Value1'].between(13, 20), } df['Range'] = np.select(ranges.values(), ranges.keys(), default='No range') # Date Value1 Value2 Range # 0 4/15/2018 4 4 Range 1 # 1 4/16/2018 4 3 Range 1 # 2 4/17/2018 2 7 Range 1 # 3 4/18/2018 4 3 Range 1 # 4 4/19/2018 3 8 Range 1 # 5 4/20/2018 9 4 Range 2 # 6 4/21/2018 9 6 Range 2 # 7 4/22/2018 8 3 Range 2 # 8 4/23/2018 9 5 Range 2 # 9 4/24/2018 9 5 Range 2 # 10 4/25/2018 10 5 Range 2 # 11 4/26/2018 15 2 Range 3 # 12 4/27/2018 18 2 Range 3 # 13 4/28/2018 17 3 Range 3 # 14 4/29/2018 6 4 No range
over 4 years ago · Santiago Trujillo Denunciar

0

Usar:

 bins = pd.IntervalIndex.from_tuples([(1, 4), (7, 10), (13, 20)], closed="both") lookup = {val: label for val, label in zip(bins.values, [f"Range {i}" for i in range(1, 4)])} res = pd.cut(df["Value1"], bins=bins).cat.rename_categories(lookup).astype("string").fillna("No Range") print(res)

Producción

 0 Range 1 1 Range 1 2 Range 1 3 Range 1 4 Range 1 5 Range 2 6 Range 2 7 Range 2 8 Range 2 9 Range 2 10 Range 2 11 Range 3 12 Range 3 13 Range 3 14 No Range Name: Value1, dtype: string
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