entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Hola, necesito ayuda pues creo que mi código es ineficiente y creo que puede haber una manera de hacerlo mejor, el objetivo del código es que toma un listado de excel y tiene que relacionar cada elemento de una columna con el resto de elementos de la misma columna y dependiendo de unas condiciones almacenar lo en un nuevo data frame con la información conjunta, en mi caso el archivo cuenta con mas de 16000 filas, por lo que al realizar el ejercicio debe realizar (16000 x 16000) 256000000 de iteraciones. Pero tarda días procesando, el código que tengo es el siguiente:

import pandas as pd                                         
import numpy as np

excel1="Cs.xlsx"                                                 

dataframe1=pd.read_excel(excel1)                                

col_names=["Eb","Eb_n","Eb_Eb","L1","Ll1","L2","Ll2","D"]
my_df =pd.DataFrame(columns=col_names)                          

count_row = dataframe1.shape[0] 

#Se crea el bucle for para hacer la operación repetitiva de concatenar Eb y crear un nuevo DF

print(count_row)

for n in range(0,count_row):

    for p in range(0,count_row):
        if abs(dataframe1.iloc[n,1] - dataframe1.iloc[p,1]) < 0.27 and abs(dataframe1.iloc[n,2] - dataframe1.iloc[p,2]) < 0.27:         
            Nb_Nb=dataframe1.iloc[n,0]+"_"+dataframe1.iloc[p,0]     

            myrow=pd.Series([dataframe1.iloc[n,0],dataframe1.iloc[p,0],Nb_Nb,dataframe1.iloc[n,1],
            dataframe1.iloc[n,2],dataframe1.iloc[p,1],dataframe1.iloc[p,2]],   
            index=["Eb","Eb_n","Eb_Eb","L1","Ll1","L2","Ll2"])
            my_df = my_df.append(myrow, ignore_index=True)          
        #print(Nb_Nb)
print(my_df.head(5))

De antemano muchas gracias por su atención

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta