2013-06-21 13 views
127

Czy wiesz, jak uzyskać kolumnę indeksu ramki danych jako tablicę? Mam listę numerów akcesyjnych w kolumnie "Dostęp" pliku CSV, który zaimportowałem do Pandy, a podczas importu ustawiam indeks w kolumnie "Dostęp". Teraz potrzebuję kolumny "Dostęp", aby ustawić zestaw etykiet w późniejszym kroku, ale nie wiem, jak wyodrębnić ją samodzielnie.Pandy - jak uzyskać indeks ramek danych jako tablicę

Odpowiedz

173

Należy użyć atrybutu values:

In [1]: df = pd.DataFrame(index=['a', 'b']) 

In [2]: df.index.values 
Out[2]: array(['a', 'b'], dtype=object) 

ten dostęp w jaki sposób dane są już zapisane, więc nie ma potrzeby konwersji.
Uwaga: Ten atrybut jest również dostępny dla wielu innych obiektów pandy.

+0

Czy to podejście zapewnia zachowanie porządku indeksów? –

+5

@DonovanThomson yes! –

47

Możesz użyć df.index, aby uzyskać dostęp do obiektu indeksu, a następnie uzyskać wartości na liście przy użyciu df.index.tolist().

+0

zwraca instanceMethod a nie listę array –

+4

@VShreyas, jak o 'df.index.values.tolist () ' – LancelotHolmes

+0

To powinno być w porządku –

14

Od pand 0,13 można również użyć get_values:

df.index.get_values() 
+4

Czy istnieje różnica między tą a .wartością? (Zaktualizowałem informacje o wersji, ponieważ ta funkcja pojawia się w dokumentach 0.13.0). –

+0

@Andy Hayden: Nie ma różnicy, że .get_values ​​to oficjalny sposób na uzyskanie tylko aktualnych wartości podczas gdy .values ​​(np. indeks) może zwracać wartości indeksu, dla których usunięto wiersze lub kolumny? –

+0

@EzekielKruglick, więc to zawsze jest kopia? Powiązanie z dokumentacją jest bardzo lekkie, nie sądziłem, że dostaniesz takich duplikatów (nawet jeśli są w MI, że nie będą w wartościach.) Byłoby świetnie zobaczyć przykład, który to demonstruje! –

24

Jeśli masz do czynienia z dataframe multi-index, może być zainteresowany w pozyskiwaniu tylko kolumnę jednego nazwą multi-index. Można to zrobić za

df.index.get_level_values('name_sub_index') 

i oczywiście name_sub_index musi być elementem FrozenListdf.index.names

Powiązane problemy