ValueError: Python で Float NaN を整数に変換できません

Rohan Timalsina 2023年6月21日
  1. Python で fillna() メソッドを使用して ValueError: cannot convert float NaN to integer を修正する
  2. Python で dropna() メソッドを使用して ValueError: cannot convert float NaN to integer を修正する
  3. numpy.nan_to_num() 関数を使用して、Python で ValueError: cannot convert float NaN to integer を修正する
ValueError: Python で Float NaN を整数に変換できません

関数に有効な引数を与えると ValueError が発生しますが、それは無効な値です。 たとえば、math モジュールの sqrt() 関数に負の数を指定すると、ValueError が返されます。

Python では、NaNNot a Number を意味し、データセット内のエントリが欠落していることを示します。 float 以外の型に変換できない特別な float 値です。

NaN 値を整数型に変換しようとすると、ValueError: cannot convert float NaN to integer が発生します。

このチュートリアルでは、Python で ValueError: cannot convert float NaN to integer を修正する方法を説明します。

Python で fillna() メソッドを使用して ValueError: cannot convert float NaN to integer を修正する

次のデータセットを使用して、価格データを整数型に変換しました。

データを float 型に変換するために使用されるデータセット

Python での ValueError: cannot convert float NaN to integer の例を次に示します。

# import pandas
import pandas

# read csv file
df = pandas.read_csv("itemprice.csv")
# convert to an integer type
df["price"] = df["price"].astype(int)

出力:

pandas.errors.IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer

データセットには 2つの NaN 値があります。 この問題は、NaN 値を 0 に置き換えることで解決できます。

fillna() メソッドは、NaN 値を Python の特定の値に置き換えます。 列の NaN 値をチェックし、指定された値で埋めます。

df_new = df.fillna(0)
print(df_new)

出力:

  items  price
0     A  540.0
1     B  370.0
2     C    0.0
3     D  220.0
4     E    0.0

ここで、float 型を整数型に変換します。

df_new["price"] = df_new["price"].astype(int)

データ型を確認して確認してください。

print(df_new["price"].dtype)

出力:

int32

Python で dropna() メソッドを使用して ValueError: cannot convert float NaN to integer を修正する

dropna() メソッドは、DataFrame オブジェクトのすべての NULL 値を削除します。

次の例では、データセット内の NULL 値を含む行を削除します。

df_new = df.dropna()
print(df_new)

出力:

  items  price
0     A  540.0
1     B  370.0
3     D  220.0

これで、データを整数型に簡単に変換できます。

df_new["price"] = df_new["price"].astype(int)
print(df_new["price"].dtype)

出力:

int32

numpy.nan_to_num() 関数を使用して、Python で ValueError: cannot convert float NaN to integer を修正する

numpy.nan_to_num() 関数を使用してこのエラーを解決することもできます。 NaN 値を 0.0 に変更します。これは整数に変換できます。

import numpy

dt = numpy.nan
print(dt)

出力:

nan

NaN 値を 0.0 に置き換えるには、numpy.nan_to_num() 関数を使用します。

dt = numpy.nan_to_num(dt)
print(dt)

出力:

0.0

次に、整数型に変換します。

dt = dt.astype(int)
print(dt.dtype)

出力:

int32

NaN 値を整数型に変換しようとすると、ValueError: cannot convert float NaN to integer が発生します。 NaN 値を指定した値で埋めるか、NaN 値を含む行を削除することで、この問題を解決できます。

これで、Python で ValueError: cannot convert float NaN to integer を解決する方法がわかりました。 これらのソリューションがお役に立てば幸いです。

著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

関連記事 - Python ValueError

関連記事 - Python Error