2017-10-01 1 views
0

erstellt einen Pandas-Datenrahmen mit read_csv.Empfangen von KeyError beim Konvertieren einer Spalte von Float zu Int

Ich änderte dann den Spaltennamen der 0. Spalte von 'Unnamed' zu 'Experiment_Number'.

df['Experiment_Number'] = df['Experiment_Number'].astype(int) 

ich diesen Fehler: mit

Die Werte in dieser Spalte sind Gleitkommazahlen und ich habe versucht, sie auf ganze Zahlen zu konvertieren

KeyError: 'Experiment_Number'

Ich habe versucht worden Jeden Tag seit gestern, zum Beispiel auch

df['Experiment_Number'] = df.astype({'Experiment_Number': int}) 

und viele andere Variationen.

Kann jemand bitte helfen, ich bin neu Pandas und so nahe an Aufgeben auf dieser Verwendung :(

Jede Hilfe wird

+1

Sie müssen mindestens das '.head()' Ihres Datenrahmens anzeigen. Ich dachte 'unbenannt' ging als' Unbenannt: 0' durch. Möglicherweise haben Sie die Spaltennamen nicht erfolgreich geändert, entweder nicht an Ort und Stelle oder mit einer falschen Schreibweise. – roganjosh

+0

Versuchen Sie: 'df = df.rename (Spalten = {df.columns [0]: 'Experiment_Number'})' und dann konvertieren. –

+0

@Coldspeed Das hat funktioniert !!!! Ich hatte dies zum Umbenennen der Spalte vor 'df.columns.values ​​[0] = 'Experiment_Number' verwendet. Aber mit 'df = df.rename (columns = {df.columns [0]: 'Experiment_Number'})' konnte ich plötzlich die float-Werte in int umwandeln. Können Sie mir sagen, warum mein erster Umbenennungscode falsch war? ... als ich den Dataframe ausgedruckt habe, wurde der Spaltenname als 'Experiment_Number' angezeigt –

Antwort

1

I had used this for renaming the column before:

df.columns.values[0] = 'Experiment_Number' 

Diese geschätzt wird gearbeitet haben sollte. Die Tatsache, dass es . bedeuteten nicht nur gab es in den Spaltennamen Sonderzeichen/unprintable Zeichen

kann ich eine weitere mögliche Anregung bieten, mit df.rename:

df = df.rename(columns={df.columns[0] : 'Experiment_Number'}) 
0

Sie können den Typ während Ihres Anrufs konvertieren und anschließend umbenennen. Wie in

df = pandas.read_csv(filename, 
        dtype = {'Unnamed': 'float'}, # inform read_csv this field is float 
        converters = {'Unnamed': int}) # apply the int() function 
df.rename(columns = {'Unnamed' : 'Experiment_Number'}, inplace=True) 

ist die dtype nicht unbedingt notwendig, da der Konverter es in diesem Fall außer Kraft gesetzt wird, aber es ist ratsam, in der Gewohnheit, von immer ein dtype für jedes Feld Ihrer Eingabe bereitstellt. Es ist zum Beispiel ärgerlich, wie Pandas Integer standardmäßig als Floats behandeln. Sie können die Option "Konverter" später auch ohne Bedenken entfernen, wenn Sie dtype angegeben haben.

Verwandte Themen