Ich habe mit Daten gearbeitet, die aus einer CSV importiert wurden. Pandas haben einige Spalten in Gleitkomma geändert, sodass die Zahlen in diesen Spalten jetzt als Gleitkommazahlen angezeigt werden! Sie müssen jedoch als Ganzzahlen oder ohne Komma angezeigt werden. Gibt es eine Möglichkeit, sie in Ganzzahlen umzuwandeln oder das Komma nicht anzuzeigen?
228
df.col = df.col.astype(int)
df = df.astype(int)
Antworten:
Gehen Sie folgendermaßen vor, um die Float-Ausgabe zu ändern:
quelle
df.a = df.a.astype(float)
?copy
Erstellt dies eine Kopie (nicht sicher, wie der Parameterastype()
verwendet wird)? Wie auch immer, um den Typ "an Ort und Stelle" zu aktualisieren?DF.({'200': {'#': 354, '%': 0.9971830985915493}, '302': {'#': 1, '%': 0.0028169014084507044}})
Beachten Sie, dass das # in float konvertiert wird und es sich um Zeilen und nicht um Spalten handelt. weil jeder ein ist,Series
der nur einen einzigen einheitlichen Typ speichern kann?dtype
? Wenn dies der Fall ist,dtype
müssen Sie diese Spaltendtype
object
so erstellen, dass sie gemischt werden können. Andernfalls würde ichnp.isclose
Verwenden Sie die
pandas.DataFrame.astype(<type>)
Funktion, um Spalten-dtypes zu bearbeiten.BEARBEITEN:
So behandeln Sie fehlende Werte:
quelle
Betrachtet man den folgenden Datenrahmen:
Ändern Sie mithilfe einer Liste von Spaltennamen den Typ für mehrere Spalten mit
applymap()
:Oder für eine einzelne Spalte mit
apply()
:quelle
ValueError: ('cannot convert float NaN to integer', u'occurred at index <column_name>')
df['C'] = df['C'].dropna().apply(np.int64)
Dies ist eine schnelle Lösung
pandas.DataFrame
für den Fall, dass Sie mehr Spalten von float in integer konvertieren möchten, auch wenn Sie NaN-Werte haben können.Ich habe es mit
else x)
und versuchtelse None)
, aber das Ergebnis hat immer noch die Float-Nummer, also habe ich verwendetelse ""
.quelle
""
auf alle Werte incol
Wenn man die von @Ryan G erwähnte Verwendung der
pandas.DataFrame.astype(<type>)
Methode erweitert, kann man daserrors=ignore
Argument verwenden, um nur die Spalten zu konvertieren, die keinen Fehler erzeugen, was die Syntax erheblich vereinfacht. Natürlich sollte beim Ignorieren von Fehlern Vorsicht walten lassen, aber für diese Aufgabe ist es sehr praktisch.Aus pandas.DataFrame.astype- Dokumenten:
quelle
quelle
So konvertieren Sie alle Float-Spalten in int
quelle
Hier ist eine einfache Funktion, mit der Floats in den kleinstmöglichen Integer-Typ verschoben werden, der keine Informationen verliert. Zum Beispiel,
100.0 kann von float in integer konvertiert werden, 99.9 jedoch nicht (ohne Informationen durch Rundung oder Kürzung zu verlieren).
Darüber hinaus kann 1.0 bis zum
int8
Verlust von Informationen heruntergestuft werden , der kleinste ganzzahlige Typ für 100_000.0 ist jedochint32
Codebeispiele:
quelle
Die Spalten, die in int konvertiert werden müssen, können in einem Wörterbuch auch wie folgt erwähnt werden
quelle
quelle
astype(int)
wurde bereits mehrfach erwähnt. Diese Antwort fügt nichts Neues hinzu.