目次
型が混在するケース
混在なしの場合(列:int)

文字列(文字列の空白含む)が混在(列:int)
- int に文字列(空白含む)が混在すると int と str が混在するから「Object型」になる

NaNが混在する場合(列:int)
- int に、本物の NaN が混在する場合、その列全体は「float型」になる

NaNが混在する場合(列:str)
- str に、NaNが混在しても元が object ばかりなのでわかりにくい

列を全て int に変換 pd.to_numeric()
- pd.to_numeric(Series, 型)は、変換対象はSeriesになる。DataFrameではないので注意
https://pandas.pydata.org/docs/reference/api/pandas.to_numeric.html
- errorsは、”ignore”, “raise”, “coerce” の3種類の値を取ります。
- “raise” がデフォルトで、これを指定すると普通に例外が発生します。
- “ignore” は例外を抑えますが、何の変換もせず、そのままのオブジェクトを返します。
- “coerce” は、数値に変換できるものは変換して、そうでないものはNaNにしてくれます。
errors=’ignore’(変換なし)
- 例外を出せないだけで、列は object のまま。変換しない
# 文字列が含まれるとobject型になる。ignoreは何も変換しない
s = pd.Series(['apple', '1.0', '2', -3])
pd.to_numeric(s, errors='ignore')
erros=’coerce’(強制的に数値へ)
- 数値に変換不可な文字列は、NaN になる。列の型は float になる
# 強制的に数値に変換できる。数値に変換不可な文字列はNaNになる
pd.to_numeric(s, errors='coerce')
s = pd.Series(['1.0', '2', -3])
# ノーマルだとこんな感じ、デフォルトでfloat64(またはint64)
pd.to_numeric(s)
downcast=’integer’(最小位のintへ)
- float ではなく 最小位の int にしたい場合
# 値を保持できる最小のint型にダウンキャストする
pd.to_numeric(s, downcast='integer')
downcast=’float’(最小位のfloatへ)
# 値を保持できる最小のfloat型にダウンキャストする(float16ではないんだ...)
pd.to_numeric(s, downcast='float')
その他(未確認)
# signedもintergerと同様か?
pd.to_numeric(s, downcast='signed')
# unsignedも用途がいまいちわからず
pd.to_numeric(s, downcast='unsigned')