2016-07-25 14 views
1

Ich habe einen Datensatz mit mehr als 30 Millionen Zeilen, auf den ich eine ganze Reihe von Datenumwandlungsregeln anwenden muss. Für diese Aufgabe versuche ich Pandas als mögliche Lösung zu erforschen, da meine derzeitige Lösung nicht sehr schnell ist.Verwenden von Pandas zum Manipulieren mehrerer Spalten

Momentan führe ich eine reihenweise Manipulation des Datensatzes durch und exportiere ihn dann in eine neue Tabelle (CSV-Datei) auf dem Datenträger.

Es gibt 5 Funktionen Benutzer auf die Daten innerhalb einer bestimmten Spalte durchführen kann:

  1. Leerraum entfernen
  2. Capitalize alle Text
  3. Format Datum
  4. ersetzen Buchstaben/Zahlen
  5. ersetzen wort

Mein erster Gedanke war Verwenden Sie das Apply oder Applmap des Datenrahmens, aber dies kann nur für eine einzelne Spalte verwendet werden.

Gibt es eine Möglichkeit, Apply oder ApplyMap auf viele Spalten statt auf nur eine anzuwenden? Gibt es einen besseren Workflow ich in Betracht ziehen sollte, da ich Manipulationen 1 tun könnte: n Spalten in meinem Dataset, in dem die maximale Anzahl der Spalten derzeit rund 30

Danke

Antwort

2

Sie Verständnis verwenden Liste mit concat wenn Notwendigkeit irgendeine Funktion arbeitet nur mit Series gelten:

import pandas as pd 

data = pd.DataFrame({'A':[' ff ','2','3'], 
        'B':[' 77','s gg','d'], 
        'C':['s',' 44','f']}) 

print (data) 
     A  B C 
0 ff  77 s 
1  2 s gg 44 
2  3  d f 

print (pd.concat([data[col].str.strip().str.capitalize() for col in data], axis=1)) 
    A  B C 
0 Ff 77 S 
1 2 S gg 44 
2 3  D F 
+0

wäre dies die Größe meines Datensatzes nicht die Leistung beeinträchtigen gegeben? Wenn ich die Liste 30+ mal wiederholen müsste, sage 5 oder 6 mal? –

+0

Ja, es ist die schnellste Lösung, siehe [Timings] (http:// Stackoverflow.com/a/38562413/2901002) in ähnlicher Antwort. – jezrael

+0

Ok ich werde es versuchen und lassen Sie wissen, wie ich aus! Danke –

Verwandte Themen