Bisher konnte die Pandas-Serie keine Ganzzahltypen mit fehlenden Werten verarbeiten.
pd.Series([1, 2, None], dtype=int)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
Wenn numerische Daten einschließlich fehlender Werte ohne Angabe des Typs gelesen werden, werden sie in den Typ float64 umgewandelt.
pd.Series([1, 2, None])
0 1.0
1 2.0
2 NaN
dtype: float64
Dieses Verhalten ist auf den Grund zurückzuführen, dass " numpy.nan
ein Gleitkommawert ist ", aber wir möchten fehlende Werte behandeln und müssen nicht numpy.nan
sein.
Als Antwort fügte Pandas v0.24.0 [Datentyp Nullable Integer] hinzu (https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html). Es scheint, dass dieses Problem durch die Einführung einer neuen "pandas.NA" anstelle von "numpy.nan" behoben wurde.
pd.Series([1, 2, None], dtype=pd.Int64Dtype())
0 1
1 2
2 <NA>
dtype: Int64
Der für dtype angegebene Wert funktioniert genauso mit der Zeichenfolge "Int64" anstelle von "pd.Int64Dtype ()". (Beachten Sie, dass "I" in Großbuchstaben geschrieben ist.)
Auch in der Dokumentation
IntegerArray is currently experimental.
Wie geschrieben, befindet sich diese Funktion noch im experimentellen Stadium, daher müssen Sie bei der Verwendung vorsichtig sein.
Recommended Posts