我希望有人能幫助我。我是Python的新手,我有一個有111列和40 000多行的數據框。所有列都包含NaN值(某些列包含比其他列更多的NaN),所以我想刪除那些至少有80%NaN值的列。我怎樣才能做到這一點?在Python中,如何選擇滿足NaN數量條件的數據框的列?
爲了解決我的問題,我嘗試以下代碼
df1=df.apply(lambda x : x.isnull().sum()/len(x) < 0.8, axis=0)
功能x.isnull().sum()/len(x)
是由x的長度來劃分在列X的NaN的數目,和所述部分< 0.8是選擇那些含有少於80%NaN的柱子。
問題是,當我運行此代碼時,我只將列名與布爾值「True」一起獲取,但我想要整列,而不僅僅是名稱。我該怎麼辦?
當你有列的名稱你想放棄,你可以在你的原始數據框上使用pandas drop功能:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop.html你需要指定axis = 1 drop columns – Quickbeam2k1
你的意思是類似於df = df.drop(df1,axis = 1)?仍然不起作用,我的數據框保持不變。 – user322778
不,我的意思是像df.drop(cols,axis = 1,inplace = True)。由於inplace,cols沒有分配列名。 – Quickbeam2k1