iloc 用于按索引为一组备用列切割数据

iloc for cutting data for a spare set of columns by index

df = pd.DataFrame({'name':['jack', 'james', 'joe'], 'age':[30, 40, 50], 'height': [6.0, 5.9, 5.5], 'is_married':[1,0,1], 'is_parent':[0,1,1]})

我只想 select 列索引:0、2、3、4(但不是 1)。以下工作正常:

df_cut = df.iloc[:,[0,2,3,4]]

但是我没有传递每个特定的列索引,而是在寻找一种可以传递的方法。我试过了:

df_cut = df.iloc[:,[0,[2:4]]

但是没用。什么是最好的解决方案?

您需要 np.r_ 来自 numpy

df_cut = df.iloc[:,np.r_[0,2:4+1]]
df_cut
Out[338]: 
    name  height  is_married  is_parent
0   jack     6.0           1          0
1  james     5.9           0          1
2    joe     5.5           1          1

删除索引 1 处的列:

df_cut = df.drop(df.columns[1], axis=1)

或使用range:

df_cut = df.iloc[:,[0]+list(range(2,5))]

另一种方式:

df_cut = df[ [col for col_index, col in enumerate(df) if col_index != 1]]