es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python: Combina un bucle for dentro de un bucle while e itera por filas en un conjunto de datos.

Me gustaría iterar las filas de datos e imprimir la última fila después de alcanzar una condición. Mi código se ve así:

D_sum = 4.39e-05
count = 0
while D_sum < 1:
   for row in df.iterrows():
       count += 1
       D_sum += D_sum
       print('count', count)
       print('D_sum', D_sum)
       print('row', row)
       break  # Cuando escribo "break", el bucle se ejecuta correctamente, pero no imprime la última fila. Imprime la primera fila de datos.

Si no escribo “break”, el bucle continúa y termina después de ciertas iteraciones.

He intentado escribir este código:

count = 0
flag = True
while flag:
    for row in df.iterrows():
        count += 1
        D_sum += (df[['Di']].sum()).values
        print('count:', count)
        print('D_sum', D_sum)
        print(row)
if D_sum == 1:
   flag = False

Pero esto también continúa hasta ciertas iteraciones (bucle infinito). Por favor, ayúdame a corregir el código en python.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para imprimir la última fila de datos después de alcanzar una condición, puedes modificar tu código de la siguiente manera:

    count = 0
    final_row = None  # inicializar final_row como None
    while D_sum < 1:
       for index, row in df.iterrows():
           count += 1
           D_sum += D_sum
           print('count', count)
           print('D_sum', D_sum)
           print('row', row)
           if D_sum >= 1:
               final_row = row  # almacenar la última fila
               break  # salir del bucle for cuando se cumpla la condición
       if final_row is not None:  # verificar si final_row ha sido encontrado
           break  # salir del bucle while cuando se cumpla la condición
    
    # imprimir la última fila
    print('Fila final:', final_row)
    

    Este código inicializa final_row fuera del bucle while, lo establece como None y lo actualiza con la row actual dentro del bucle for cuando se cumple la condición. Luego sale del bucle for y verifica si final_row ha sido actualizado, y si es así, sale del bucle while. Finalmente, imprime la última fila cuando se sale del bucle while.

Comments are closed.