2017-05-01 20 views
7

Jestem na Pythonie 2.7. Mam ramkę danych z 200 kolumnami i muszę upuścić kilka.Upuszczanie kolumn w ramce danych

Mogę użyć poniższego, aby usunąć ostatnie n kolumn. Jak mogę to napisać, abym mógł upuścić pierwsze 10, następnie kolumnę 22, a następnie 26, 10 od ostatniego i ostatniego 5. Wszystko w jednym wierszu.

df2 = df.iloc[:, :-5] 

Odpowiedz

8

Zastosowanie np.r_:

import numpy as np 
df.drop(df.columns[np.r_[:10, 22, 26, -10, -5:0]], axis=1) 

np.r_ skleja kilka plasterków. Na przykład np.r_[1:3, 5, 7:9, -3:0] zwraca array([ 1, 2, 5, 7, 8, -3, -2, -1]). Możesz użyć tego do zindeksowania w df.columns. Dla DataFrame 40 kolumn (o nazwie A1:A40)

df.columns[np.r_[:3, 5, 7:9, -2:0]] 
Out: Index(['A1', 'A2', 'A3', 'A6', 'A8', 'A9', 'A39', 'A40'], dtype='object') 

i wreszcie, ponieważ zajmuje etykiety indeksu można przekazać to do df.drop. Wynikowa DataFrame będzie miała następujące kolumny:

df.drop(df.columns[np.r_[:3, 5, 7:9, -2:0]], axis=1).columns 
Out: 
Index(['A4', 'A5', 'A7', 'A10', 'A11', 'A12', 'A13', 'A14', 'A15', 'A16', 
     'A17', 'A18', 'A19', 'A20', 'A21', 'A22', 'A23', 'A24', 'A25', 'A26', 
     'A27', 'A28', 'A29', 'A30', 'A31', 'A32', 'A33', 'A34', 'A35', 'A36', 
     'A37', 'A38'], 
     dtype='object') 
+0

dzięki, w jaki sposób mogę dodać zakres pomiędzy, powiedzmy, drop col 12-15? – Moosa

+1

Możesz zmienić część np.r_ na 'np.r _ [: 10, 12:15, 22, 26, -10, -5: 0]'. Jeśli przełączysz to na 'df.drop' (jako indeksatory do' df.columns')), to również usunie kolumny 12-13-14. – ayhan

Powiązane problemy