pandasのto_numeric関数において空白がある場合はNaNに変換されて、他のデータは指定の数値型に変換されません。
このようなことはこれまで起こらなかったのですが、競争除外馬が出たおかげでコードの不備が発覚しました。
対策として欠損値を0で埋めてからto_numeric関数を使い、あとで0を空白にreplaceしました。指定の範囲で0を使わない場合に有効です。
空白やNaNを含む列の数値型変換ができないのは惜しいところです。
df['人気'] = df['人気'].fillna(0) df['人気'] = pd.to_numeric(df['人気'],downcast='signed') df['人気'] = df['人気'].replace(0,'')