我有一个包含12个功能列的df,一个标签列,然后是另外八个功能列。
我这样设置X和Y:
y = df.iloc[:, 12] #Label variable
X = df.iloc[:, np.r_[0:12, 13:]] #Features
选择ok,但是x是前12列,然后是前13列,而我希望除第13列之外的所有列。必须有一种更简单的方法,但是我对此不满意。
答案 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)