2016-08-05 19 views
0

Ich frage mich, ob es eine optimale Möglichkeit gibt, diese Art von Aktion durchzuführen. Ich habe eine Spalte von Dateipfaden, wir nennen Laufwerk C, die Pfade wiePandas: Teilen von Zellen in einer Spalte nach einem Zeichen, dann Hinzufügen des Teils zu anderen Spalten über eine bedingte?

enthält
user\library\photos\item 

Dies ist eine Spalte in einem Datenrahmen, und die anderen Spalten sind Dir [1], Dir [2 ], ..., Dir [n], ITEM

ich die Zellen in Laufwerk C durch "\", so dass die letzte Zeichenfolge an die Spalte ITEM angehängt wird, geteilt werden soll, und die anderen werden nach Menge an die vorherigen Verzeichnisse angehängt.

Meine aktuelle grobe Aktion ist ein paar While-Schleifen, aber gibt es einen besseren Weg, dies in Pandas zu tun? Ich bin neu in der Bibliothek.

Würde ich auch gerne erwähnen, dass Ich weiß, Pandas ist nicht für diese Art von Sachen gemacht, ich benutze es teilweise, um die Bibliothek zu lernen.

Prost!

+2

Geben Sie bitte Beispieldaten an. Es hilft, auf die Frage zu antworten und für zukünftige Leser zu verstehen, was vor sich geht. – piRSquared

+0

Es würde auch helfen, Ihre while-Loops zu sehen, und zumindest ein Beispiel für die gewünschte Ausgabe. – Jeff

Antwort

0

Sie können die split-Funktion verwenden, auf die das Attribut str einer Serie zugreift, um den Laufwerkspfad in die einzelnen Verzeichnisse aufzuteilen. Konvertieren Sie dann die resultierende Reihe von Listen in einen DataFrame. Es kann in einer Zeile durchgeführt werden, wie folgt:

dir_df = pd.DataFrame(df['C Drive'].str.split('\\').tolist()) 
dir_df.columns = ['Dir [{}]'.format(col) for col in dir_df.columns] 
dir_df.columns[-1] = 'ITEM' 

Wenn Sie die 'C Drive' Spalte in dir_df auch wollen, können Sie einfach hinzufügen, etwa so:

dir_df['C Drive'] = df['C Drive'] 

By the way, könnte man will '\' entkommen. Entweder konvertieren Sie es in '/' oder '\', während Sie die Daten einlesen. Sonst könnten seltsame Dinge passieren.