2015-01-02 26 views
9

Nie jestem pewien, gdzie jestem na manowce, ale nie mogę zresetować indeksu na ramce danych.Indeks resetowania pand nie działa?

Kiedy biegnę test.head(), mam wyjście poniżej:

test.head

Jak widać, dataframe jest kawałek, więc indeks jest poza granicami. Co chcę zrobić, to zresetować indeks dla tej ramki danych. Więc uruchamiam test.reset_index(drop=True). To wyprowadza następujące:

reset

To wygląda jak nowy indeks, ale tak nie jest. Ponownie działa test.head, indeks jest wciąż taki sam. Próba użycia lambda.apply lub iterrows() powoduje problemy z ramką danych.

Jak mogę naprawdę zresetować indeks?

+0

Przykro mi, ale te stoły są ... takie ... takie ogromne obrazy. @ _ @ Pękałem. – kuanb

+1

@kuanb Z przyjemnością dowiesz się, że tabele zostały ponownie sformatowane w notatniku Jupyter 5 :) –

Odpowiedz

7

Odpowiedź BrenBarna działa.

Poniższa pracował także poprzez this thread, który nie jest rozwiązywanie problemów tak jak artykulacji jak zresetować indeks:

test = test.reset_index() 
del test['index'] 
+1

Pracował jak urok! – Subspacian

26

reset_index domyślnie nie modyfikuje ramki DataFrame; zwraca nowy DataFrame z indeksem resetowania. Jeśli chcesz zmodyfikować oryginał, użyj argumentu inplace: df.reset_index(drop=True, inplace=True). Ewentualnie przypisz wynik reset_index, wykonując df = df.reset_index(drop=True).

1

Dodam w odpowiedzi Kod Veritas to:

Jeśli masz już określoną kolumnę indeksu, oczywiście możesz zapisać del, oczywiście. W moim hipotetycznym przykładzie:

df_total_sales_customers = pd.DataFrame({'Sales': total_sales_customers['Sales'], 
           'Customers': total_sales_customers['Customers']}, index = total_sales_customers.index) 

    df_total_sales_customers = df_total_sales_customers.reset_index()