私は列の1つに欠損値がいくつかあるパンダデータフレームを持っています。パンダの欠損値を含む行を削除します
データフレームは数百行から成りますが、列4では5つの値が?
です。
この列の値が?
の行を削除したいとします。
私は4列目は?
に等しくなるために行を削除するには
df = df[np.isfinite(df[:,4])]
私は列の1つに欠損値がいくつかあるパンダデータフレームを持っています。パンダの欠損値を含む行を削除します
データフレームは数百行から成りますが、列4では5つの値が?
です。
この列の値が?
の行を削除したいとします。
私は4列目は?
に等しくなるために行を削除するには
df = df[np.isfinite(df[:,4])]
のようなものを使用してみましたが、あなたは?
に等しくないデータを選択することができます。
# Test data
df = DataFrame({
'col0': [0, 1, 2, 3, 4],
'col1': [0, 1, 2, 3, 4],
'col2': [0, 1, 2, 3, 4],
'col3': [0, 1, 2, 3, 4],
'col4': [0, 1, 2, '?', '?']})
df.loc[df.iloc[:, 4] != '?']
col0 col1 col2 col3 col4
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
あなたは4列目は?
が含まれている行を削除したい場合は、?
文字をエスケープして動作するように、ブールインデックス、最終的にはブール値のデフォルト値False
を提供する必要があるため、それは少しトリッキーです否定~
。
df.loc[~df.iloc[:,4].str.contains('\?', na = False)]
col0 col1 col2 col3 col4
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
列が数値のみが含まれている場合は、次のメソッドを使用することができます。変換できない値に対してNaN
を生成するには、errors
パラメータcoerce
を使用して数値に変換してください。その後、単にdropna
を使用して値を削除します。
df.iloc[] = pd.to_numeric(df.iloc[:,4], errors='coerce')
# Or if you want to apply the transformation to the entire DataFrame
# df = df.apply(pd.to_numeric, errors='coerce')
df.dropna(inplace=True)
col0 col1 col2 col3 col4
0 0 0 0 0 0.0
1 1 1 1 1 1.0
2 2 2 2 2 2.0
実際には '?'(文字列)ですか?列にそのような列が含まれている場合は行を削除しますか? –
'DataFrame.dropna()'メソッドは、あなたがしたいことを達成していますか? –
'df [df.iloc [:、4] .astype(str)!="? "]'。つまり、列4が索引4を意味する場合は、列4に索引3を使用することができます。 – Abdou