2012-12-07 16 views
18

Jeśli mogę zaimportować lub utworzyć kolumnę pandy nie zawierających spacje, można uzyskać do niego dostęp, takich jak:Pandy dostęp kolumna w/nazwy kolumn zawierających spacje

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

df1.data1 

który zwróciłby tej serii dla mnie. Jeśli jednak, że kolumna ma miejsca w jego imieniu, nie jest dostępne za pośrednictwem tej metody:

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

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

wiem, że można do niego dostęp za pomocą .xs():

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

Jest dostałem, aby być w inny sposób. Mam googleed to jak szalony i nie mogę wymyślić inny sposób google to. Przeczytałem wszystkie 96 wpisów na SO, które zawierają "kolumnę" i "ciąg" oraz "pandy" i nie znalazłem poprzedniej odpowiedzi. Czy to jedyny sposób, czy jest coś lepszego?

Dzięki!

Odpowiedz

16

myślę domyślnym sposobem jest użycie:

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

df1['dat a1'] 

Inne metody, takie jak wystawienie go jako atrybut są bardziej dla wygody.

+0

Dzięki, że jedna powinnaś Tak mnie to zaskoczyło. –

+0

Dziękuję za komentarz. Zwykle używam kropki, aby uzyskać dostęp do moich kolumn (df.col_name), ale po prostu poznaj tę sztuczkę, aby uzyskać dostęp do nazw kolumn za pomocą spacji, używając df [nazwa kolumny z odstępem]. Thx. – theteddyboy

19

Stary post, ale może być interesujące: pomysł (który jest destrukcyjny, ale spełnia swoje zadanie, jeśli chcesz to szybki i brudny) jest do zmiany nazwy kolumn za pomocą podkreślenia:

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

Jeśli chcesz ujednolicić kolumny również z małymi literami , użyj 'df1.columns = [c.lower(). replace ('', '_') dla c w df1.columns]' – JAV

Powiązane problemy