manejo de dataframe iterando muchas filas
Publicado por Centella (3 intervenciones) el 15/07/2020 02:58:02
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 almacenarlo 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:
De antemano muchas gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
Valora esta pregunta


0