2013-11-20 13 views
40

Ich habe den folgenden Code, der eine CSV-Datei importiert. Es gibt 3 Spalten und ich möchte die ersten beiden auf Variablen setzen. Wenn ich die zweite Spalte auf die Variable "efficiency" setze, wird auch die Indexspalte angeheftet. Wie kann ich die Indexspalte entfernen?Entfernen der Indexspalte in Pandas

df = pd.DataFrame.from_csv('Efficiency_Data.csv', header=0, parse_dates=False) 
energy = df.index 
efficiency = df.Efficiency 
print efficiency 

Ich versuchte

del df['index'] 

verwenden, nachdem ich

gesetzt
energy = df.index 

, die ich in einem anderen Beitrag gefunden, aber das führt zu "KeyError: 'index'"

Antwort

27

DataFrames und Series haben immer einen Index. Obwohl es neben den Spalten angezeigt wird, ist es keine Spalte, weshalb del df ['index'] nicht funktioniert hat. Wenn Sie den Index durch einfache fortlaufende Nummern ersetzen möchten, verwenden Sie df.reset_index(). Ich empfehle dringend, ein wenig von der Pandas-Dokumentation zu lesen, wie 10 minutes to Pandas, um ein Gefühl dafür zu bekommen, warum der Index dort ist, wie er benutzt wird.

+0

Dank! Ich beschloss, es einfach anders zu importieren, ohne Pandas zu benutzen. Ich muss einige Arithmetik für jede der Spalten durchführen, und Python mochte es nicht, wenn die Indexspalte angehängt wurde. Pandas ist sicherlich der einfachste Weg, Daten zu importieren, aber nicht immer das Beste, was ich herausgefunden habe. –

+0

Haben Sie versucht, die Arithmetik mit Pandas zu berechnen? –

+0

kann man den Indexnamen entfernen? – Quant

0

möglich Geben Sie mithilfe der Parameter index_col der Funktion from_csv function if an, welche Spalte ein Index in Ihrer CSV-Datei ist Dies löst Ihr Problem nicht. Bitte geben Sie ein Beispiel für Ihre Daten an.

1

Wenn Ihr Problem ist gleich wie meins, wo Sie nur die Spaltenüberschriften von 0 auf Spaltengröße zurücksetzen möchten. Habe

df = pd.DataFrame(df.values); 

EDIT:

Keine gute Idee, wenn Sie heterogene Datentypen haben. Besser verwenden nur

df.columns = range(len(df.columns)) 
73

Wann und aus Ihrer CSV-Datei zu lesen sind das Argument Index = False so zum Beispiel

df.to_csv(filename , index = False) 

und von der csv zu lesen

df.read_csv(filename , index = False) 

Dies sollte verhindern Das Problem, damit Sie es später nicht beheben müssen.

+2

Vielen Dank.Das ist genau das, was die Frage ist, nach der gesucht wird. –

+0

"header = False" funktioniert zum Entfernen von Kopfzeilen auf die gleiche Weise –

+0

Wie wäre es beim Schreiben in Json ?? – pyd

4

Sie können eine der Spalten als Index festlegen, wenn es sich beispielsweise um eine "ID" handelt. In diesem Fall wird die Indexspalte durch eine der von Ihnen gewählten Spalten ersetzt.

df.set_index('id', inplace=True) 
0

df.reset_index (drop = True, Inplace = True)

Verwandte Themen