多くのNaN値を含むDataFrameがあります。 NaN値が多すぎる行を削除したい;具体的には:7以上
dropna関数をいくつかの方法で使用してみましたが、anyNaN値を含む列または行を貪欲に削除することは明らかです。
この質問( Slice Pandas DataFrame by Row )は、NaN値が多すぎる行のリストをコンパイルできれば、それらを削除できることを示しています。すべてシンプルで
df.drop(rows)
count関数を使用してnull以外の値をカウントできることはわかっています。この関数を合計から減算して、その方法でNaNカウントを取得できます(NaN値をカウントする直接的な方法はありますか?続けて?)。しかし、それでも、DataFrameを行ごとに通過するループを作成する方法がわかりません。
これが正しい方向に進んでいると私が思ういくつかの擬似コードです:
### LOOP FOR ADDRESSING EACH row:
m = total - row.count()
if (m > 7):
df.drop(row)
私はまだPandasに慣れていないので、この問題を解決する他の方法に非常にオープンです。それらがより単純であるか、より複雑であるかは関係ありません。
基本的にこれを行う方法は、列の数を決定し、非nan値の最小数を設定し、この基準を満たさない行を削除することです。
df.dropna(thresh=(len(df) - 7))
docs を参照してください
df.dropnaのオプションのthresh引数を使用すると、行を保持するために非NA値の最小数を指定できます。
df.dropna(thresh=df.shape[1]-7)