2017-05-01 32 views
7

我在Python 2.7中。我有一个200列的数据框,需要删除几个。删除数据框中的列

我可以使用下面的删除最后n列。我怎么写,所以我可以放弃前10,然后列22,然后26,倒数第10,最后5.所有在一行。

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

回答

8

使用np.r_

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

np.r_串接几片。例如,np.r_[1:3, 5, 7:9, -3:0]返回array([ 1, 2, 5, 7, 8, -3, -2, -1])。你可以用它来索引到df.columns。对于40列(名为A1:A40)的数据帧,

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

最后,因为它需要的索引标识,你可以通过这个来df.drop。由此产生的数据框将具有以下列:

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

谢谢,我怎么也添加一个范围之间,说下降col 12-15? – Moosa

+1

您可以将np.r_零件更改为'np.r _ [:10,12:15,22,26,-10,-5:0]'。如果你把它传递给'df.drop'(作为'df.columns'的索引器)),那么它也会丢弃12-13-14列。 – ayhan

相关问题