2016-09-30 4 views
2

Ich möchte träge erstellen Dask Datenrahmen von einem Generator, der wie etwas aussieht erstellen:Träge dask Datenrahmen vom Generator

[parser.read(local_file_name) for local_file_name in repo.download_files())] 

Wo beide parser.read und repo.download_files Rück Generatoren (mit Ausbeute). parser.read ergibt sich ein Wörterbuch von Schlüssel-Wert-Paare, die (wenn ich einfach nur Pandas mit wurde) in einer Liste jedes Wörterbuch sammeln würde, und dann verwenden:

df = pd.DataFrame(parsed_rows) 

Was ist der beste Weg, um eine dask zu erstellen Datenrahmen davon? Der Grund ist, dass a) ich die Anzahl der zurückgegebenen Ergebnisse nicht unbedingt weiß, und b) ich weiß nicht die Speicherzuordnung des Computers, auf dem es bereitgestellt wird.

Alternativ was soll ich anders tun (zum Beispiel vielleicht eine Reihe von Datenrahmen erstellen und dann stattdessen die in zu dask sagen?)

Dank.

Antwort

1

Wenn Sie den Ein-Computer-Dies-Scheduler verwenden möchten, müssen Sie wissen, wie viele Dateien Sie beginnen müssen.

filenames = repo.download_files() 
dataframes = [delayed(load)(filename) for filename in filenames] 
df = dd.from_delayed(dataframes) 

Wenn Sie die distributed scheduler Sie neue Berechnungen im Fluge hinzufügen können, aber das ist ein bißchen weiter fortgeschritten: Dies könnte etwa wie folgt sein.