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

428
Views
Optimización de Python de bucles dobles anidados con pandas

¿Cómo se optimizan los bucles for anidados? digamos que tengo dos tablas de datos con diferentes fechas y horas. Suponga que las fechas y horas están ordenadas en orden. La primera tabla tiene una fecha y hora, la segunda tabla tiene start.datetime y end.datetime entre otras columnas.

Puedo hacer los primeros bucles para la primera tabla y el segundo bucle para ver si el elemento en el primer bucle está entre start.datetime y end.datetime; si es así, escribe una fila en el programa. Luego, pasa al siguiente elemento en el primer ciclo. Como estoy codificando en python y es iteración, no creo que se pueda aplicar la programación dinámica (solo sé memorización), pero ¿hay alguna forma de optimizar? Supongo que mi código es tiempo = O (n ^ 2) ya que necesito hacer un bucle dos veces y espacio = O (n).

También debo asegurarme de que se eliminen los duplicados si el usuario carga exactamente la misma primera tabla. El tiempo para ejecutar el código puede ser corto, pero dado que mi csv resultante contiene una gran cantidad de datos (como 2 o 3 años de datos), planeo optimizarlo en la medida de lo posible.

 #open new file using writer. write first row headings. then do a comparision and #only select those when lotstarttime is later than starttime, lotstarttime earlier than lotendtime #i is start time index and j is the lot time index with open(outfile, 'a', newline ='') as h: writer = csv.writer(h) if os.stat(outfile).st_size == 0: writer.writerow(('Start TimeStamp', 'Alarm_text', 'Package', 'Recipe', 'Lot_starttime', 'UL/L', 'Network')) for i in range(0,len(Start_time)): for j in range(0,len(Lot_starttime)): if Start_time[i] > Lot_starttime[j] and Start_time[i] < Lot_endtime[j]: writer.writerow((Start_time[i], Alarm_text[i], Package[i], Recipe[j], Lot_starttime[j],Unload_Load[j],Network[j])) #removes duplicate row keeping only first occurences #sorts according to time; earliest first df = pd.read_csv(outfile) df.drop_duplicates(keep = 'first',inplace = True) df['Start TimeStamp'] = pd.to_datetime(df['Start TimeStamp']) df.sort_values(by='Start TimeStamp', inplace = True) df.to_csv(outfile, index=False) end = time.time() print(f'Duration of code for {first_excel}, {sheet_name} is {round((end - start),2)}seconds.') merge_data(first_excel,'A','AAA_Performance_Lot(2022)_N1.2.csv','A_AAA.csv')

La salida es como

`¿Cuál es el nombre de su archivo de Excel?: 2362022

La duración del código para A.xlsx, AAA es de 2,24 segundos.

...

Completado`

Gracias.

about 4 years ago · Santiago Trujillo
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!