eine Vorlage mit der Annahme DataFrame, das man hier mit Nullwerten kopieren möchte ...
Wenn Sie keine NaNs in Ihrem Datensatz haben, können durch Null multipliziert wird deutlich schneller:
In [19]: columns = ["col{}".format(i) for i in xrange(3000)]
In [20]: indices = xrange(2000)
In [21]: orig_df = pd.DataFrame(42.0, index=indices, columns=columns)
In [22]: %timeit d = pd.DataFrame(np.zeros_like(orig_df), index=orig_df.index, columns=orig_df.columns)
100 loops, best of 3: 12.6 ms per loop
In [23]: %timeit d = orig_df * 0.0
100 loops, best of 3: 7.17 ms per loop
Verbesserung hängt von Datenrahmen Größe, fand aber nie langsamer.
Und nur für das Heck von ihm:
In [24]: %timeit d = orig_df * 0.0 + 1.0
100 loops, best of 3: 13.6 ms per loop
In [25]: %timeit d = pd.eval('orig_df * 0.0 + 1.0')
100 loops, best of 3: 8.36 ms per loop
Aber:
In [24]: %timeit d = orig_df.copy()
10 loops, best of 3: 24 ms per loop
EDIT !!!
Vorausgesetzt, Sie haben einen Rahmen mit float64, wird dies mit Abstand der schnellste sein! Es ist auch in der Lage, einen beliebigen Wert zu erzeugen, indem 0.0 zu der gewünschten Füllnummer ersetzt wird.
In [23]: %timeit d = pd.eval('orig_df > 1.7976931348623157e+308 + 0.0')
100 loops, best of 3: 3.68 ms per loop
Je nach Geschmack kann man von außen definieren nan, und tut eine allgemeine Lösung, unabhängig vom jeweiligen Typ float:
In [39]: nan = np.nan
In [40]: %timeit d = pd.eval('orig_df > nan + 0.0')
100 loops, best of 3: 4.39 ms per loop
Nein, ich kann nicht glauben, von einer wesentlichen Verbesserung auf dem. –
Ich bekomme einen Speicherfehler auf np.zeros, da die Daten eine große Menge sind. Irgendwelche Hinweise darauf, was ich tun kann? Ich habe außer "MemoryError" keine andere Ausgabe. Ich habe 100 GB RAM und die Daten sind nur 20 GB, aber immer noch fehlgeschlagen. Keine Ahnung, wie es zu debuggen, 64-Bit-Ubuntu-Server. Ich habe ein bisschen gegoogelt, aber jeder sagt - Teile in Stücke, aber diese Daten können nicht geteilt werden. – niedakh
Können Sie nur mit 'Daten' arbeiten? Warum musst du eine andere Struktur erstellen, um es zu halten? –