修正方法: valueerror: float nan を int に変換できません
pandas の使用時に発生する可能性のあるエラーは次のとおりです。
ValueError : cannot convert float NaN to integer
このエラーは、列に NaN 値が含まれている場合に、pandas DataFrame の列を浮動小数点から整数に変換しようとすると発生します。
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
次のパンダ データフレームを作成するとします。
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, np. no , 10, 6, 5, np. no , 9, 12]}) #view DataFrame df points assists rebounds 0 25 5 11 1 12 7 NaN 2 15 7 10 3 14 9 6 4 19 12 5 5 23 9 NaN 6 25 9 9 7 29 4 12
現在、「bounces」列は「float」データ型です。
#print data type of 'rebounds' column df[' rebounds ']. dtype dtype('float64')
「bounces」列を浮動小数点数から整数に変換しようとしているとします。
#attempt to convert 'rebounds' column from float to integer df[' rebounds '] = df[' rebounds ']. astype (int) ValueError : cannot convert float NaN to integer
「バウンス」列の NaN 値は整数値に変換できないため、 ValueError が返されます。
エラーを修正する方法
このエラーを修正する方法は、列を浮動小数点から整数に変換する前に NaN 値を処理することです。
次のコードを使用して、最初に NaN 値を含む行を特定できます。
#print rows in DataFrame that contain NaN in 'rebounds' column print (df[df[' rebounds ']. isnull ()]) points assists rebounds 1 12 7 NaN 5 23 9 NaN
その後、列を浮動小数点から整数に変換する前に、NaN 値を含む行を削除するか、NaN 値を別の値に置き換えることができます。
方法 1: NaN 値を含む行を削除する
#drop all rows with NaN values df = df. dropna () #convert 'rebounds' column from float to integer df[' rebounds '] = df[' rebounds ']. astype (int) #view updated DataFrame df points assists rebounds 0 25 5 11 2 15 7 10 3 14 9 6 4 19 12 5 6 25 9 9 7 29 4 12 #view class of 'rebounds' column df[' rebounds ']. dtype dtype('int64')
方法 2: NaN 値を置換する
#replace all NaN values with zeros df[' rebounds '] = df[' rebounds ']. fillna ( 0 ) #convert 'rebounds' column from float to integer df[' rebounds '] = df[' rebounds ']. astype (int) #view updated DataFrame df points assists rebounds 0 25 5 11 1 12 7 0 2 15 7 10 3 14 9 6 4 19 12 5 5 23 9 0 6 25 9 9 7 29 4 12 #view class of 'rebounds' column df[' rebounds ']. dtype dtype('int64')
どちらの方法でもValueErrorを回避し、浮動小数点列を整数列に正常に変換できることに注意してください。
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
修正方法: 列が重なっていますが、サフィックスが指定されていません
修正方法: オブジェクト「numpy.ndarray」には「append」属性がありません
修正方法: すべてのスカラー値を使用する場合は、インデックスを渡す必要があります。