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としても問題なかったのでこのように処理しました.

Pandas DataFrameのカラムのdtype変更” に対して1件のコメントがあります。

  1. a より:

    df[["col"]]=df[["col"]]でも間違えではありませんが
    これではデータフレームにアクセスすることになります。
    シリーズにアクセスするのであれば正しくは
    df["col"]=df["col"]です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください