如何获得2组df列?

时间:2019-05-06 11:49:13

标签: python pandas numpy

我有一个包含12个功能列的df,一个标签列,然后是另外八个功能列。

我这样设置X和Y:

y = df.iloc[:, 12] #Label variable
X = df.iloc[:, np.r_[0:12, 13:]] #Features

选择ok,但是x是前12列,然后是前13列,而我希望除第13列之外的所有列。必须有一种更简单的方法,但是我对此不满意。

2 个答案:

答案 0 :(得分:0)

使用DataFrame.pop从原始系列到新系列y中提取列:

np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(5,15))).add_prefix('col')
print (df)
   col0  col1  col2  col3  col4  col5  col6  col7  col8  col9  col10  col11  \
0     8     8     3     7     7     0     4     2     5     2      2      2   
1     4     0     9     6     2     4     1     5     3     4      4      3   
2     7     7     0     2     9     9     3     2     5     8      1      0   
3     0     8     2     5     1     8     1     5     4     2      8      3   
4     3     6     3     4     7     6     3     9     0     4      4      5   

   col12  col13  col14  
0      1      0      8  
1      7      1      1  
2      7      6      2  
3      5      0      9  
4      7      6      6  

y = df.pop(df.columns[12])
print (y)
0    1
1    7
2    7
3    5
4    7
Name: col12, dtype: int32

print (df)
   col0  col1  col2  col3  col4  col5  col6  col7  col8  col9  col10  col11  \
0     8     8     3     7     7     0     4     2     5     2      2      2   
1     4     0     9     6     2     4     1     5     3     4      4      3   
2     7     7     0     2     9     9     3     2     5     8      1      0   
3     0     8     2     5     1     8     1     5     4     2      8      3   
4     3     6     3     4     7     6     3     9     0     4      4      5   

   col13  col14  
0      0      8  
1      1      1  
2      6      2  
3      0      9  
4      6      6  

答案 1 :(得分:0)

如果要按索引执行此操作,请使用drop:

col = [13]
X = df.drop(df.columns[col],axis=1)