Wenn Sie die Anzahl der Einträge ex ante kennen, sollten Sie den Speicherplatz durch Angabe des Index vorweg reservieren (indem Sie das Datenbeispiel aus einer anderen Antwort verwenden):
import pandas as pd
import numpy as np
# wir wissen, dass wir 5 Datensätze haben werden
numberOfRows = 5
# DataFrame erstellen
df = pd.DataFrame(index=np.arange(0, numberOfRows), columns=('lib', 'qty1', 'qty2') )
# jetzt füllen wir es zeilenweise auf
for x in np.arange(0, numberOfRows):
#loc oder iloc funktionieren hier beide, da der Index natürliche Zahlen sind
df.loc[x] = [np.random.randint(-1,1) for n in range(3)]
In[23]: df
Out[23]:
lib qty1 qty2
0 -1 -1 -1
1 0 0 0
2 -1 0 -1
3 0 -1 0
4 -1 0 0
Geschwindigkeitsvergleich
In[30]: %timeit tryThis() # Funktionswrapper für diese Antwort
In[31]: %timeit tryOther() # Funktionswrapper ohne Index (siehe z.B. @fred)
1000 loops, best of 3: 1.23 ms pro Schleife
100 loops, best of 3: 2.31 ms pro Schleife
Und - wie aus den Kommentaren hervorgeht - wird der Geschwindigkeitsunterschied mit einer Größe von 6000 noch größer:
Wenn die Größe des Arrays (12) und die Anzahl der Zeilen (500) erhöht werden, wird der Geschwindigkeitsunterschied gravierender: 313ms vs 2.29s