Pandas - 删除DataFrame的最后一列

时间:2017-07-19 17:10:50

标签: python pandas dataframe

我有一个DataFrame,我想删除它的最后一列。到目前为止,我刚刚放弃了我认为是

的最后一栏

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

然而,在此命令之前,我删除NaN的所有列。因此,删除列[3],因为它填充了NaN s,因此失败。

我想说的是删除整个DataFrame的最后一列。我觉得这样会很完美。

我尝试fish_frame([:-1], axis=1),但语法无效。

任何帮助将不胜感激。

DataFrame:

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 个答案:

答案 0 :(得分:9)

使用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

答案 1 :(得分:3)

使用drop with columns index:

                              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

输出:

<button class="btn" data-clipboard-demo="" data-clipboard-action="copy" data-clipboard-text="Just because you can doesn&#39;t mean you should — clipboard.js">Copy to clipboard</button>

答案 2 :(得分:1)

另一种删除最后一列的方法

df = df[df.columns[:-1]]

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果要删除最后一列

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

如果需要删除带有索引的特定列

df = df.drop(df.columns[column_index],axis=1)

具有列名

df = df.drop(['column_name'],axis =1)

希望有帮助!