LoginSignup
60
63

More than 5 years have passed since last update.

pandas.DataFrameの型を変えたいけど例外レコードがあってastypeできない時の対処法

Posted at

pandas.DataFrameにおけるString型列をfloatやint形式に直したい時がある。欠損値がある場合でも、astype(float)をすることによりfloat形式に変換することは可能だ。しかし、実データを扱う際には例外レコード(数値が入っているはずなのに記号が入っているなど)が紛れ込んでいることも多く、astype変換ではできないことがある。

そんな時にはpandas.to_numericを使おう。

df["数値変更したい列"] = pd.to_numeric(df["数値変更したい列"], errors='coerce')

errosに対応するパラメータには3種類存在し、それぞれ以下の役割を持つ。

  • raise:例外データがあることを表示し、エラーを返す
  • coerce:例外データ部分をNaNで返し、他の行は数値変換する
  • ignore:例外データがある場合には数値変換はせず、inputのDataFrameをそのまま返す

詳しくは公式のレファレンスを参照。
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_numeric.html

なお、convert_objectsによる数値変換も存在するようだが、現在では非推奨になっている模様。
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.convert_objects.html

60
63
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
63