2017-07-19 161 views
4

我有一個DataFrame,我想刪除它的最後一列。到現在爲止,我剛剛放棄了我認爲是最後一列的內容熊貓 - 刪除DataFrame的最後一列

if len(fish_frame.columns) == 4: del fish_frame[3]

然而,在此命令之前,我刪除了所有列NaN s。因此,刪除列[3],因爲它填充了NaN s,所以它失敗。

我想說的是放棄整個DataFrame的最後一列。我覺得這樣可以很好地工作。

我試過fish_frame([:-1], axis=1)但這是無效的語法。

任何幫助,將不勝感激謝謝。

數據框:

fish_frame after dropna: 

           0  1  2   4 
0       #0721  NaN NaN   NaN 
1      GBE COD  746 $2.00 $1,492.00 
2      GBW COD 13,894 $0.50 $6,947.00 
3      GOM COD  60 $2.00  $120.00 
4   GB WINTER FLOUNDER 94,158 $0.25 $23,539.50 
5   GOM WINTER FLOUNDER 3,030 $0.50 $1,515.00 
6     GBE HADDOCK 18,479 $0.02  $369.58 
7     GOM HADDOCK  0 $0.02  $0.00 
8     GBW HADDOCK 110,470 $0.02 $2,209.40 
9       HAKE  259 $1.30  $336.70 
10      PLAICE 3,738 $0.40 $1,495.20 
11      POLLOCK 3,265 $0.02  $65.30 
12    WITCH FLOUNDER 1,134 $1.30 $1,474.20 
13      SNE YT 1,458 $0.65  $947.70 
14      GB YT 4,499 $0.70 $3,149.30 
15      REDFISH  841 $0.02  $16.82 
16 54 DAS @ $8.00/DAY = 432.00  NaN NaN  None 

回答

5

使用iloc和列表索引

fish_frame = fish_frame.iloc[:, :-1] 

           0  1  2 
0       #0721  NaN NaN 
1      GBE COD  746 $2.00 
2      GBW COD 13,894 $0.50 
3      GOM COD  60 $2.00 
4   GB WINTER FLOUNDER 94,158 $0.25 
5   GOM WINTER FLOUNDER 3,030 $0.50 
6     GBE HADDOCK 18,479 $0.02 
7     GOM HADDOCK  0 $0.02 
8     GBW HADDOCK 110,470 $0.02 
9       HAKE  259 $1.30 
10      PLAICE 3,738 $0.40 
11      POLLOCK 3,265 $0.02 
12    WITCH FLOUNDER 1,134 $1.30 
13      SNE YT 1,458 $0.65 
14      GB YT 4,499 $0.70 
15      REDFISH  841 $0.02 
16 54 DAS @ $8.00/DAY = 432.00  NaN NaN 
+0

這似乎沒有改變我的。這是否意味着我的數據框中有更多列是我無法看到的或? – theprowler

+1

@theprowler我更新了帖子以重新分配結果。 – piRSquared

+0

好的。這非常感謝很多。我的理解是:編譯索引時使用的是最好的方法嗎?我見過很多 – theprowler

2

使用與列指數下降:

fish_frame = fish_frame.drop(fish_frame.columns[-1],axis=1) 

輸出:

       0  1  2 
0       #0721  NaN NaN 
1      GBE COD  746 $2.00 
2      GBW COD 13,894 $0.50 
3      GOM COD  60 $2.00 
4   GB WINTER FLOUNDER 94,158 $0.25 
5   GOM WINTER FLOUNDER 3,030 $0.50 
6     GBE HADDOCK 18,479 $0.02 
7     GOM HADDOCK  0 $0.02 
8     GBW HADDOCK 110,470 $0.02 
9       HAKE  259 $1.30 
10      PLAICE 3,738 $0.40 
11      POLLOCK 3,265 $0.02 
12    WITCH FLOUNDER 1,134 $1.30 
13      SNE YT 1,458 $0.65 
14      GB YT 4,499 $0.70 
15      REDFISH  841 $0.02 
16 54 DAS @ $8.00/DAY = 432.00  NaN NaN 
+1

這很可能適用於OP的數據框。但是,從一般意義上說,如果最後一個列名在數據框中的其他任何地方重複出現,那麼它也會刪除這些列。加一:-) – piRSquared

+0

哦..是的。如果有重複的列,它將刪除該列名稱的所有匹配項。疑難雜症。 –