2017-07-19 7 views
4

Ich habe einen DataFrame und ich möchte die letzte Spalte davon fallen lassen. Bis jetzt hatte ich nur die letzte Spalte mitPandas - drop letzte Spalte von DataFrame

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

Unmittelbar vor diesem Befehl lasse ich jedoch alle Spalten von NaN s fallen. Damit wird die Spalte [3] entfernt, da sie mit NaN s gefüllt ist, so dass es fehlschlägt.

Ich möchte sagen, nur die letzte Spalte des gesamten DataFrame fallen lassen. Ich denke, das würde perfekt funktionieren.

Ich versuchte fish_frame([:-1], axis=1), aber das ist ungültige Syntax.

Jede Hilfe wäre dankbar, danke.

Der Datenrahmen:

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 

Antwort

5

Verwenden iloc und Liste Indizierung

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

Das schien mir überhaupt nichts zu ändern. Bedeutet das, dass es mehr Spalten in meinem Datenrahmen gibt, die ich nicht sehen kann? – theprowler

+1

@theprowler Ich habe den Beitrag aktualisiert, um das Ergebnis neu zuzuweisen. – piRSquared

+0

OK hatcha. Das hat sehr gut funktioniert. Nur so verstehe ich: Ist "iloc" die allumfassend beste Methode beim Indexieren? Ich habe es oft gesehen – theprowler

2

Verwendung mit dem Spalten-Index fallen:

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

Ausgang:

       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

Dies wird höchstwahrscheinlich mit dem Datenrahmen von OP funktionieren. Wenn jedoch der letzte Spaltenname irgendwo anders im Datenrahmen wiederholt wird, werden auch diese Spalten im allgemeinen Sinne gelöscht. Plus Eins :-) – piRSquared

+0

Oh .. ja. Wenn eine doppelte Spalte vorhanden ist, werden alle Vorkommen dieses Spaltennamens gelöscht. Erwischt. –