Pandas DataFrameのカラムのdtype変更
Table of Contents
Pandas DataFrame dfのカラム"col"のdtypeをfloat64からintに変換するには
[cc]
In [1]: df[["col"]]=df[["col"]].astype(int)
[/cc]
で通常うまくいくのですが,NaNが存在するとエラーとなります.intではNaNが扱えません.回避する方法の一つはNaNに適当な値を入れることです.
[cc]
In [2]: df[["col"]]=df[["col"]].fillna(0.0).astype(int)
[/cc]
この問題は公共用水域水質測定データを扱っているときに起こりました.時分カラムは通常10時30分なら1030のように読み込まれ,整数として認識され,それを処理すればよかったのですが,空白セルがあると,他がすべて整数でもカラム全体がfloat64となり,空白セルの値がNaNになりました.このとき10時30分は1030.0となり,datetimeへの変換がうまくいかなくなりました.空白セルなので仮の時刻は何でもよく,0としても問題なかったのでこのように処理しました.
df[["col"]]=df[["col"]]でも間違えではありませんが
これではデータフレームにアクセスすることになります。
シリーズにアクセスするのであれば正しくは
df["col"]=df["col"]です。