Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

242
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!