2017-07-12 5 views
1

Ich habe einen Pandas-Datenrahmen, wo ich jedes Element in der ersten Spalte teilen und eine Spaltenüberschrift zu den beiden neuen Spalten zuweisen möchte. jetzt die Spalte keinen header.it hat, ist so etwas wie:Aufteilen einer Spalte und Zuweisen von Header in Pandas Dataframe

     0 1 2 3 4 

A|Item Name 25 26 31 40 45 B|Item Name 26 28 29 32 50 C|Item Name 31 32 12 32 11

Erwartete Ausgabe

Ltr  Itm     0 1 2 3 4 

A Item Name 25 26 31 40 45 B Item Name 26 28 29 32 50 C Item Name 31 32 12 32 11

den folgenden Code verwendet, um das gleiche zu versuchen und zu konvertieren:

df2 = pd.DataFrame(df2.row.str.split('|', 1).tolist(), columns=['Let', 'Itm'])

aber Fehler, dass es kein 'Zeile' Attribut im Datenrahmen gibt.

jede Hilfe wird sehr geschätzt. Vielen Dank.

+0

Es ist wie ein Index aussieht, und auf jeden Fall gibt es keine Spalte ‚Reihe‘, so dass die Linie, die Sie gewonnen verwendet benannt arbeite zwar, obwohl der Ansatz meistens korrekt ist – Vaishali

Antwort

2

Wenn es ein Index ist, können Sie

df.index = df.index.str.split('|', expand = True) 
df = df.reset_index().rename(columns = {'level_0': 'Ltr', 'level_1': 'Itm'}) 

Sie erhalten verwenden

Ltr Itm   0 1 2 3 4 
0 A Item Name 25 26 31 40 45 
1 B Item Name 26 28 29 32 50 
2 C Item Name 31 32 12 32 11 
+0

Danke. Lief wie am Schnürchen. Eine weitere Frage, die ich habe, ist, kann ich auch die Spaltenüberschriften zusammen mit der .split-Funktion, die Sie vorgeschlagen haben. Es tut mir leid, ich bin ziemlich neu in Python und Pandas. –

+0

danke nochmal. Du bist der beste. –

+0

Danke :). Wenn Sie eine Spalte anstelle eines Indexes aufteilen, können Sie die Spaltennamen direkt mit df [['Ltr', 'Itm']] = df.col.str.split (...) zuweisen, aber für den Index kann ich ' Ich denke an einen besseren Weg. Kann erst reset_index werden und dann splitten – Vaishali

Verwandte Themen