Ich habe ein DataFrame df mit 541 Spalten, und ich muss alle eindeutigen Paare seiner Spaltennamen in den Zeilen eines separaten DataFrame speichern, jeweils 8 mal wiederholt.Wie erreiche ich am schnellsten einen Pandas DataFrame?
Ich dachte, ich würde eine leere DataFrame fp, Doppelschleife durch df Spaltennamen erstellen, in jede 8. Zeile einfügen, und füllen Sie die Lücken mit dem letzten verfügbaren Wert.
Als ich versuchte, dies zu tun, war ich verwirrt, wie lange es dauert. Mit 541 Spalten muss ich nur 146.611 mal schreiben, dauert aber deutlich über 20 Minuten. Dies scheint für nur Datenzugriff ungeheuerlich zu sein. Wo ist das Problem und wie kann ich es lösen? Es dauert weniger Zeit als für Pandas, eine Korrelationsmatrix mit den Spalten zu erzeugen, also muss ich etwas falsch machen.
Hier ist ein reproduzierbares Beispiel dafür, was ich meine:
fp = np.empty(shape = (146611, 10))
fp.fill(np.nan)
fp = pd.DataFrame(fp)
%timeit for idx in range(0, len(fp)): fp.iloc[idx, 0] = idx
# 1 loop, best of 3: 22.3 s per loop