2017-09-25 2 views
-1

J'ai créé une boucle for et j'obtiens une donnée (donnée ci-dessous) en sortie. J'ajoute toutes les sorties à une liste vide. Je reçois les sorties mais avec un avertissement de performance:Comment résoudre l'avertissement de performance en ajoutant une donnée dans la liste dans une boucle for?

PerformanceWarning: Ajout/soustraction de tableau de DateOffsets à la série non vectorisé

dataframe de sortie:

Intercept pente 0 3,008165 -0,001024 Intercept pente 0 2.153798 0.001749

code:

coeff = [] 

for x in something: 
    #do something 
    reg_df = DataFrame({"Slope":slope,"Intercept":intercept}) 
    coeff.append(reg_df) 

Pourquoi je reçois cet avertissement?

Comment puis-je résoudre ce problème?

Toute aide serait appréciée.

Répondre

0

Je pense que le mieux est ajouter des valeurs à la liste et appeler le constructeur DataFrame qu'une seule fois:

L = [] 
for x in range(2): 
    #do something 
    slope = x * 2 
    intercept = x ** 2 
    L.append({"Slope":slope,"Intercept":intercept}) 

print (L) 
[{'Slope': 0, 'Intercept': 0}, {'Slope': 2, 'Intercept': 1}] 

df = pd.DataFrame(L) 
print (df) 
    Intercept Slope 
0   0  0 
1   1  2 

Une autre solution similaire:

L = [] 
for x in range(2): 
    #do something 
    slope = x * 2 
    intercept = x ** 2 
    L.append([slope,intercept]) 

print (L) 
[[0, 0], [2, 1]] 

df = pd.DataFrame(L, columns=['Intercept','Slope']) 
print (df) 
    Intercept Slope 
0   0  0 
1   2  1 
+0

Après avoir utilisé la 1ère méthode, je reçois toutes les valeurs individuelles des listes? – Dheeraj

+0

Je pense que dans la première méthode obtenir dictioanries dans la liste, dans la seconde obtenir des listes dans la liste – jezrael

+0

après les avoir convertis en une trame de données, je reçois les sorties comme Slope Intercept 0 [-0.00102418207681] [3.00816500711] – Dheeraj