Split große csv-Datei, indem Sie den Wert einer Spalte in python

Ich habe eine csv-große Datei, die ich nicht behandeln kann in Speicher mit python. Ich bin Aufspaltung es in mehrere Stücke nach der Gruppierung nach dem Wert einer bestimmten Spalte mit der folgenden Logik:

def splitDataFile(self, data_file):

    self.list_of_chunk_names = []
    csv_reader = csv.reader(open(data_file, "rb"), delimiter="|")
    columns = csv_reader.next()

    for key,rows in groupby(csv_reader, lambda row: (row[1])):
        file_name = "data_chunk"+str(key)+".csv"
        self.list_of_chunk_names.append(file_name)

        with open(file_name, "w") as output:
            output.write("|".join(columns)+"\n")
            for row in rows:
                output.write("|".join(row)+"\n")

    print "message: list of chunks ", self.list_of_chunk_names

    return

Die Logik ist, aber es ist langsam. Ich Frage mich, wie kann ich diese optimieren? Zum Beispiel mit pandas?

Bearbeiten

Weiteren Erklärung: ich bin nicht auf der Suche nach einer einfachen Aufteilung auf gleiche Größe Brocken (wie jeder mit 1000 Zeilen), die ich teilen möchten, indem Sie den Wert einer Spalte, das ist, warum ich bin mit groupby.

Schreibe einen Kommentar