看板 Python 關於我們 聯絡資訊
想刪除pandas 中的所有 nan 列欄位, 使用用 data.dropna(axis=1,how='all') 還是無法刪除掉 請問這是什麼原因? 程式碼網址如下 https://pastebin.com/v1qmebKz 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.29.202 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1599259364.A.E36.html ※ 編輯: yshihyu (112.104.29.202 臺灣), 09/05/2020 06:45:22
gmccntzx1: 你可以先去查一下 how='all' or 'any' 的差別 09/05 07:12
gmccntzx1: 再補一點:注意有沒有設定 inplace=True 09/05 07:17
yshihyu: any是行列全部只要有包含nan 都移除, inplace=True剛試 09/05 07:27
yshihyu: 還是無法刪除掉nan 欄位 09/05 07:28
gmccntzx1: 你可以描述一下你最後想要得到的結果長什麼樣子嗎?是 09/05 08:39
gmccntzx1: 只要一行資料中有一欄資料是 NA 就把那行資料 drop 掉 09/05 08:39
gmccntzx1: ,還是怎麼樣的?如果是的話,照理說我上面的做法就可 09/05 08:39
gmccntzx1: 以了。如果不是,那你至少簡單的描述一下你預期處理前 09/05 08:39
gmccntzx1: 與處理後想看到的資料長什麼樣子給大家看看,省得雙方 09/05 08:39
gmccntzx1: 還要等待回覆和猜測你的想法是什麼 09/05 08:39
yshihyu: 我是想把欄位中有 NAN 那列刪除掉 09/05 08:40
yshihyu: result = data.dropna() ... 我剛剛改這樣就可以 09/05 08:41
yshihyu: 但我不知道為什麼原因~ 09/05 08:41
yshihyu: 這資料原本有949筆...有一列中有 NAN , 我希望刪除NAN那 09/05 08:41
yshihyu: 列.. 09/05 08:42
gmccntzx1: 因為你說的「刪掉 nan 欄位」這句話的意思,我理解的 09/05 08:48
gmccntzx1: 是「把該行裡是 nan 的那個欄位刪掉,只保留其他有資 09/05 08:48
gmccntzx1: 料的欄位」。如果是這樣的話,這種操作對於這種 table 09/05 08:48
gmccntzx1: 形式的資料是不合理的,因為這就代表處理完後,各行 09/05 08:48
gmccntzx1: 資料的欄位數量會不同。 09/05 08:48
gmccntzx1: 因為 dropna 預設回傳一個新的 dataframe,避免直接修 09/05 08:49
gmccntzx1: 改原始資料。 09/05 08:49
gmccntzx1: 所以如果你不是把 inplace 設為 true 的話,你就要去 09/05 08:50
gmccntzx1: 接 dropna 回傳的資料。 09/05 08:50
gmccntzx1: 而如果你設 inplace=True,那寫法就變成 df.dropna(in 09/05 08:52
gmccntzx1: place=True) 即可,跑完這行後,df 就是你要的結果。 09/05 08:52
TitanEric: 你要刪row有包含Nan應該是axis=0,how='any' 剛試有成功 09/05 08:53
TitanEric: 記得接return值 09/05 08:53
TitanEric: 啊 感謝前面幫忙 09/05 08:54
gmccntzx1: 沒事,只是覺得不要讓原 PO 解完問題卻不知道原因是什 09/05 08:57
gmccntzx1: 麼 09/05 08:57
gulaer: how的話是全部都nan才會刪除喔!不放才是default有一格是n 09/09 07:46
gulaer: an就刪掉整列 09/09 07:46