以下のように、.csv ファイルから Pandas データフレームにデータを読み取ります。列の 1 つ、つまり についてはid
、列タイプを として指定したいと思いますint
。問題は、id
シリーズに欠損値または空の値があることです。
id
.csv の読み取り中に列を整数に変換しようとすると、次の結果が表示されます。
df= pd.read_csv("data.csv", dtype={'id': int})
error: Integer column has NA values
あるいは、以下のように読み取った後に列の型を変換しようとしましたが、今度は次のようになります。
df= pd.read_csv("data.csv")
df[['id']] = df[['id']].astype(int)
error: Cannot convert NA to integer
これにどう対処すればいいでしょうか?
ベストアンサー1
バージョン 0.24 以降では、pandas は欠損値を持つ整数 dtype を保持できるようになりました。
Pandasは、欠損値を含む可能性のある整数データを次のように表現できます。arrays.IntegerArray
これはパンダ内で実装された拡張型です。これは整数のデフォルトのdtypeではなく、推論されません。dtypeを明示的に渡す必要があります。array()
またはSeries
:
arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())
pd.Series(arr)
0 1
1 2
2 NaN
dtype: Int64
列を null 許容整数に変換するには、次を使用します。
df['myCol'] = df['myCol'].astype('Int64')