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