2015-01-02 8 views
9

Ich bin nicht sicher, wo ich irre, aber ich kann nicht scheinen, den Index auf einem Datenrahmen zurückzusetzen.Pandas Reset-Index scheint nicht zu funktionieren?

Wenn ich test.head() laufen lasse, erhalte ich die folgende Ausgabe:

test.head

Wie Sie sehen können, der Datenrahmen eine Scheibe ist, so ist der Index außerhalb der Grenzen. Ich möchte den Index für diesen Datenrahmen zurücksetzen. So laufe ich test.reset_index(drop=True). Das gibt die folgenden:

reset

, der wie einen neuen Index aussieht, aber es ist nicht. Der Index läuft wieder test.head, der Index ist immer noch derselbe. Der Versuch, lambda.apply oder iterrows() zu verwenden, verursacht Probleme mit dem Datenrahmen.

Wie kann ich den Index wirklich zurücksetzen?

+0

Es tut mir leid, aber diese Tabellen sind ... so ... so große Bilder. @ _ @ Ich brach auf. – kuanb

+1

@kuanb Sie werden glücklich sein zu wissen, dass die Tabellen in Jupyter Notebook 5 neu formatiert werden :) –

Antwort

7

BrenBarns Antwort funktioniert.

Im Folgenden auch über this thread gearbeitet, die nicht die Fehlerbehebung so viel wie eine Artikulation ist, wie der Index zurückgesetzt:

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

Arbeitete wie ein Charme! – Subspacian

26

reset_index Standardmäßig ändert der DataFrame nicht; Es gibt einen neuen DataFrame mit dem Reset-Index zurück. Wenn Sie das Original ändern möchten, verwenden Sie das inplace Argument: df.reset_index(drop=True, inplace=True). Alternativ können Sie das Ergebnis von reset_index mit df = df.reset_index(drop=True) zuweisen.

1

ich in Code veritas Antwort hinzufügen würde:

Wenn Sie haben bereits eine Indexspalte angegeben, dann können Sie natürlich den del speichern. In meinem hypothetischen Beispiel:

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()