2016-11-30 8 views
-1

Hallo Jungs Ich habe versucht, löschen 2 Spalten von Excel-Datenrahmen auf Pandas, mit einem Drop-Befehl wie dieseWie mehrere Spalten auf Pandas Datenrahmen

energy = energy.drop(energy.columns[[0 , 1]], axis= 1) 

jedoch konnte ich nicht mache es fallen Vermeiden Sie die Spalten aus der Sicht. und schließlich spüre ich, dass die Spalten, die ich löschen soll, als mehrstufiger Index auf meiner Maschine erscheinen. schließlich habe ich versucht, einen der Ebene von ihm wie diese

energy.index = energy.index.droplevel(2) 

fallen Aber noch kann ich nicht gelingt, wie ich diese Spalten vermeiden sollten.

ich eine Bildschirmkopie meiner Arbeit angeschlossen haben enter image description here

+2

Betrachten Sie die Eingabe aus Ihrem Code anstelle der Verknüpfung, um es über Bild haben. – Kyrubas

+1

betrügen: http://stackoverflow.com/questions/26347412/drop-multiple-columns-pandas?rq=1 – EdChum

Antwort

1

Statt die Spalten fallen, könnten Sie Ihre Datenrahmen wie so Subset:

In [3]: mydf = pd.DataFrame({"A":[1,2,3,4],"B":[4,3,2,1], "C":[3,4,5,3],"D":[6,4,3,2]}) 
In [4]: mydf 
Out[4]: 
    A B C D 
0 1 4 3 6 
1 2 3 4 4 
2 3 2 5 3 
3 4 1 3 2 
In [5]: mydf[mydf.columns[2:]] 
Out[5]: 
    C D 
0 3 6 
1 4 4 
2 5 3 
3 3 2 

Das funktioniert, wenn Sie versuchen, zu entfernen die ersten 2 Spalten zum Beispiel. Es funktioniert, indem Sie eine Liste mit df.columns erstellen, die Sie dann unterteilen und auf Ihren Datenrahmen anwenden. Sie würden dann wahrscheinlich den neuen Datenrahmen auf eine Variable setzen wollen. Wenn die Spalten, die Sie nicht benachbarte löschen möchten sind, können Sie Schleife durch eine Liste von Spalten löschen:

In [7]: mydf1 = mydf.copy() 
In [8]: for col in ["A","D"]: 
    ...:  mydf1 = mydf1.drop(col,axis=1) 

In [9]: mydf1 
Out[9]: 
    B C 
0 4 3 
1 3 4 
2 2 5 
3 1 3 
0

Wenn Sie wirklich Spalten entfernen möchten Sie del verwenden können:

>>> df = pd.DataFrame({'A':range(3),'B':list('abc'), 'C':range(3,6), 'D':list('gde')}) 
>>> for x in ['A', 'B']: 
...  del df[x] 
... 
>>> df 
    C D 
0 3 g 
1 4 d 
2 5 e 
-1

Dies könnte Hilfe

energy.drop(energy.columns[[0,1]] , axis=1, inplace=True) 
1

Versuchen Sie einfach die Spalten umbenennen

Sagen Sie bitte

In: df.columns 

Out: MultiIndex(levels=[['BURGLARY', 'GRAND LARCENY', 'GRAND LARCENY OF MOTOR 
    VEHICLE', 'TMAX', 'TMIN'], ['count', 'mean']], 
    labels=[[0, 1, 2, 3, 4], [0, 0, 0, 1, 1]]) 

Dann

In: df.columns = ['Burglary', 'Grand Larceny', 'Grand Larceny on Motor Vehicle', 
    'TMAX', 'TMIN'] 

Und voila

In: df.columns 

Out: Index(['BURGLARY', 'GRAND LARCENY', 'GRAND LARCENY OF MOTOR VEHICLE', 
    'TMAX', 
    'TMIN'], 
    dtype='object') 
Verwandte Themen