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]]
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]]