誰かが私を助けてくれることを願っています。私はPythonの初心者です。私は、111列と40 000行以上のデータフレームを持っています。すべての列にはNaN値が含まれています(一部の列には他の列より多くのNaNが含まれています)。したがって、少なくとも80%のNaN値を持つ列を削除します。これどうやってするの?私の問題を解決するためにPythonでは、NaNの数に関する条件を満たすデータフレームの列を選択するにはどうすればよいですか?
、私は機能x.isnull().sum()/len(x)
は、xの長さ列XでのNaNの数を分割することであり、一部< 0.8はそれらを選択することで、次のコード
df1=df.apply(lambda x : x.isnull().sum()/len(x) < 0.8, axis=0)
を試し80%未満のNaNを含むカラム。
問題は、このコードを実行すると、ブール値 "True"とともに列名が取得されますが、名前だけでなく列全体が必要な点です。私は何をすべきか?
を使用すると、列の名前を持っている:
または実行してコメントで示唆したよう
ドロップしたい場合は、元のデータフレームにpandasドロップ機能を使用することができます:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop.html axis = 1を指定する必要がありますドロップコラム – Quickbeam2k1あなたはdf = df.drop(df1、axis = 1)のような意味ですか?それでも動作しない場合、私のデータフレームは変わりません。 – user322778
いいえ、df.drop(cols、axis = 1、inplace = True)のような意味です。インプレースのために、列は列名ではありません。 – Quickbeam2k1