2016-09-21 13 views
3

Ich arbeite mit einem Pandas Datenrahmen und brauche mehrere Spalten (x & y im Beispiel unten) als ganze Zahl und eine Spalte als Float (l). Scheint, dass das Zuweisen einer neuen Zeile mit einem Float das gesamte Datenfeld als Float neu erstellt. Warum ist das und wie verhindere ich das?Pandas Dataframe automatische Typumwandlung

data = pd.DataFrame(data=[[3103, 1189, 1]],index = None, columns = ['y', 'x', 'l'], dtype = int) 
print data.y 
data.ix[1] = (3, 3, 3.4) 
print data.y 

Welche produziert:

0 3103 
Name: y, dtype: int32 
0 3103 
1  3 
Name: y, dtype: float64 
+0

Hier finden Sie eine Antwort: http://stackoverflow.com/questions/22044766/adding-row-to-pandas-datareframe-changes-dtype – IanS

+0

Missachten Sie meine Antwort, die @IanS verknüpft ist eine effizientere Lösung. – sage88

Antwort

1

Sie alle anderen Spalten nach jeder Zugabe Neufassung können mit:

data['y'] = data['y'].astype(int) 

nicht die effizienteste Lösung, wenn Sie eine Menge hinzufügen müssen Spalten im laufenden Betrieb. Alternativ können Sie den gesamten Datenrahmen mit Hilfe von Series im Voraus erstellen und das ganze Objekt als Erstellungszeit eingeben, wenn dies eine Option ist.