2012-12-07 28 views
18

Wenn ich importieren oder eine Pandas Spalte erstellen, die keine Leerzeichen enthält, kann ich ihn als solchen Zugang:Pandas Spalte Zugriff w/Spaltennamen mit Leerzeichen

df1 = DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'], 
       'data1': range(7)}) 

df1.data1 

die diese Serie für mich zurückkehren würde. Wenn Sie jedoch, dass Spalte ein Leerzeichen in seinem Namen hat, ist es nicht zugänglich über diese Methode:

df2 = DataFrame({'key': ['a','b','d'], 
       'data 2': range(3)}) 

df2.data 2  # <--- not the droid i'm looking for. 

Ich weiß, dass ich es .xs zugreifen kann():

df2.xs('data 2', axis=1) 

Es gibt bekam, um ein anderer Weg zu sein. Ich habe es wie verrückt gegoogelt und kann mir keinen anderen Weg vorstellen, es zu googeln. Ich habe alle 96 Einträge hier auf SO gelesen, die "Spalte" und "Zeichenfolge" und "Pandas" enthalten und konnte keine vorherige Antwort finden. Ist das der einzige Weg oder gibt es etwas Besseres?

Danke!

Antwort

16

Ich denke die Standardmethode zu verwenden ist:

df1 = pandas.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'], 
      'dat a1': range(7)}) 

df1['dat a1'] 

Die anderen Methoden, wie sie als Attribut Aussetzen der Einfachheit halber mehr sind.

+0

Danke, dass man shouldn‘ Ich habe mich so gestellt wie es ist. –

+0

Danke für den Kommentar. Normalerweise verwende ich dot, um auf meine Spalten zuzugreifen (df.col_name), aber kenne diesen Trick, um auf die Spaltennamen mit Leerzeichen zuzugreifen, indem du df [Spaltenname mit Leerzeichen "] verwendest. Thx. – theteddyboy

19

Alte Post, aber mag interessant sein: Eine Idee (die destruktiv ist, sondern macht den Job, wenn Sie es schnell und schmutzig wollen) ist Spalten mit Unterstrichen umbenennen:

df1.columns = [c.replace(' ', '_') for c in df1.columns] 
+0

Wenn du die Spalten auch in Kleinbuchstaben standardisieren willst , benutze 'df1.columns = [c.lower(). replace (' ',' _ ') für c in df1.columns] ' – JAV