2013-08-02 14 views
119

Jak uzyskać nazwę kolumny indeksu w paczkach Pythona? Oto przykładowa karta danych:Tytuł lub nazwa kolumny indeksu Pandy

   Column 1 
Index Title   
Apples    1 
Oranges    2 
Puppies    3 
Ducks    4 

Co próbuję zrobić, to pobierz/ustaw tytuł indeksu danych. Oto, co próbowałem:

import pandas as pd 
data = {'Column 1'  : [1., 2., 3., 4.], 
     'Index Title' : ["Apples", "Oranges", "Puppies", "Ducks"]} 
df = pd.DataFrame(data) 
df.index = df["Index Title"] 
del df["Index Title"] 
print df 

Czy ktoś wie, jak to zrobić?

Odpowiedz

155

Można tylko get/set indeks poprzez jego name własności

In [7]: df.index.name 
Out[7]: 'Index Title' 

In [8]: df.index.name = 'foo' 

In [9]: df.index.name 
Out[9]: 'foo' 

In [10]: df 
Out[10]: 
     Column 1 
foo    
Apples   1 
Oranges   2 
Puppies   3 
Ducks   4 
+6

Od tej pory (0.16) to nie działa. Lub raczej - działa, ale gdy tylko DataFrame się modyfikuje, kasuje nazwę indeksu. –

+4

powinno być możliwe określenie nazwy indeksu w czasie tworzenia DataFrame. na przykład 'pd.DataFrame (wartości, index = {" INDEX_NAME ": wartości_indeksów})'. Nie rozumiem, dlaczego nie jest to dozwolone lub wdrożone? – denfromufa

+0

można bezpośrednio skonstruować z indeksem, aby dodać nazwę – Jeff

23

df.index.name powinno załatwić sprawę.

Python ma funkcję dir, która pozwala na zapytanie o atrybuty obiektu. dir(df.index) było pomocne tutaj.

+0

Kciuk w górę dla tej 'dir()' górnej wskazówki – SARose

10

Jeśli nie chcesz, aby utworzyć nowy wiersz, ale po prostu umieścić go w pustej komórce następnie użyć:

df.columns.name = 'foo' 

przeciwnym razie użycia:

df.index.name = 'foo' 
+1

Po prostu znalazłem nazwę dla nazw kolumn. Nic dziwnego, że ustawienie df.index.name daje ci nowy poziom. Dziękuję Ci! – Charles

29

Od wersji 0.18.0 można użyć rename_axis:

print df 
      Column 1 
Index Title   
Apples   1.0 
Oranges   2.0 
Puppies   3.0 
Ducks    4.0 

Nowa funkcjonalność działa dobrze w łańcuchach metod.

print df.rename_axis('foo') 
     Column 1 
foo    
Apples  1.0 
Oranges  2.0 
Puppies  3.0 
Ducks   4.0 

Można również zmienić nazwę nazwy kolumn z parametrem axis:

print df 
Col Name  Column 1 
Index Title   
Apples   1.0 
Oranges   2.0 
Puppies   3.0 
Ducks    4.0 
print df.rename_axis('foo').rename_axis("bar", axis="columns") 
bar  Column 1 
foo    
Apples  1.0 
Oranges  2.0 
Puppies  3.0 
Ducks   4.0 

print df.rename_axis('foo').rename_axis("bar", axis=1) 
bar  Column 1 
foo    
Apples  1.0 
Oranges  2.0 
Puppies  3.0 
Ducks   4.0 
2

Zastosowanie df.index.rename('foo', inplace=True) aby ustawić nazwę indeksu.

Wygląda na to, że ten api jest dostępny od pandas 0.13.

Powiązane problemy