私はこの行を呼んでいます:
_lang_modifiers = [keyw.strip() for keyw in row["language_modifiers"].split("|") if not isinstance(row["language_modifiers"], float)]
_
これは、_row["language_modifiers"]
_がWord(_atlas method
_、central
)の場合に動作するようですが、nan
として表示される場合は動作しません。
私はif not isinstance(row["language_modifiers"], float)
がnan
として物事が起きる時間をキャッチできると思ったが、そうではなかった。
背景:_row["language_modifiers"]
_はtsvファイルのセルであり、解析中のtsvでそのセルが空だったときにnan
として表示されます。
そのようなエラーは、主に空のセルを表すNaNが原因です。データフレームdfでこのイディオムを使用して、追加の操作を適用する前に、このようなデータを除外するのが一般的です。
_df_new = df[df['ColumnName'].notnull()]
_
あるいは、fillna()
メソッドを使用してnull
値をデフォルトの値に代入(置換)する方が便利な場合があります。例えば。すべてのnull
またはNaN
は、その列の平均値に置き換えることができます
_housing['LotArea'] = housing['LotArea'].fillna(housing.mean()['LotArea'])
_
または、空の文字列「」または別のデフォルト値などの値に置き換えることができます
_housing['GarageCond']=housing['GarageCond'].fillna("")
_
df = df.dropna(thresh=n)
を使用することもできます。ここで、n
は許容値です。つまり、n行を削除しないために非NA値が必要です
このアプローチは行を削除します
例:5列のデータフレームがある場合、df.dropna(thresh=5)
は5つの有効な、またはNa以外の値を持たない行を削除します。
あなたの場合、有効な行のみを保持したいかもしれません。その場合、しきい値を使用する列の数に設定できます。