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

244
Vistas
Múltiples condiciones si en el marco de datos de pandas con diferentes umbrales

Tengo un marco de datos con varios parámetros:

 par1 par2 par3 par4 par5 1.122208 1.054132 1.133250 1.114845 1.183850 1.076445 1.128663 0.998518 1.081816 1.006934 1.077058 1.561871 1.045255 1.120456 1.768667 0.904869 1.183985 0.938095 0.927841 1.201934 0.876596 1.044014 0.877457 0.871429 0.990452 ...

El valor de cada parámetro debe comprobarse frente a un umbral específico. Necesito verificar si al menos dos de los parámetros anteriores están por encima de los umbrales antes mencionados. No importa qué parámetros estén por encima del umbral, siempre que haya al menos dos de ellos. Tenga en cuenta que par1 tiene un umbral1, par2 un umbral2 y así sucesivamente, con umbral1 diferente de umbral2,..., umbral5 y así sucesivamente.

Hasta ahora he escrito una condición if anidada fea, pero me preguntaba cuál sería el mejor enfoque aquí.

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

0

Usando los datos de muestra de Kelvin Ducray, podemos llevar la solución un paso más allá, para evitar el ciclo for/apply, y usar las operaciones vectorizadas de Pandas, que deberían ser más rápidas:

 thresholds = pd.Series(thresholds) # compare df with thresholds # sum accross the booleans # check True or False for >=2 above_thresholds = df.gt(thresholds).sum(1).ge(2) df.assign(above_thresholds = above_thresholds) par1 par2 par3 par4 par5 above_thresholds 0 1.122208 1.054132 1.133250 1.114845 1.183850 True 1 1.076445 1.128663 0.998518 1.081816 1.006934 False 2 1.077058 1.561871 1.045255 1.120456 1.768667 True 3 0.904869 1.183985 0.938095 0.927841 1.201934 False 4 0.876596 1.044014 0.877457 0.871429 0.990452 False
over 4 years ago · Santiago Trujillo Denunciar

0

¿Esto ayuda a resolver su problema?

 df = pd.DataFrame( { 'par1': [1.122208, 1.076445, 1.077058, 0.904869, 0.876596], 'par2': [1.054132, 1.128663, 1.561871, 1.183985, 1.044014], 'par3': [1.133250, 0.998518, 1.045255, 0.938095, 0.877457], 'par4': [1.114845, 1.081816, 1.120456, 0.927841, 0.871429], 'par5': [1.183850, 1.006934, 1.768667, 1.201934, 0.990452], } ) thresholds = { 'par1': 0.5, 'par2': 3, 'par3': 1.2, 'par4': 1.1, 'par5': 3, } def check_thresholds(input_row): no_over_threshold = sum( [value > thresholds[col_name] for col_name, value in input_row.items()] ) if no_over_threshold >= 2: return True else: return False df['above_thresholds'] = df.apply(check_thresholds, axis=1)

Salida de ejemplo:

ingrese la descripción de la imagen aquí

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