在 Pandas iloc 中同时传递列索引和范围

Tan*_*ngo 2 python dataframe python-3.x pandas

假设我有一个包含 100 列的数据框。我只想为所有行选择 0,1 和 51-100 列。我现在正在尝试这样的事情:

df.iloc[:,[0,1,range(51,101)]]
Run Code Online (Sandbox Code Playgroud)

但它抛出错误:

“用序列设置数组元素”

虽然如果我只传递范围而不是列索引,它会起作用。

我也试过:

df.iloc[:,[0,1,51:102)]]
Run Code Online (Sandbox Code Playgroud)

它显示无效的语法。

有人可以在这里指出错误吗。还请提出实现功能的替代方法。

jez*_*ael 5

我认为您需要numpy.r_连接索引:

df.iloc[:,np.r_[0,1,51:102]]
Run Code Online (Sandbox Code Playgroud)

样本:

df = pd.DataFrame([[0] * 10], columns=list('abcdefghij'))
print (df)
   a  b  c  d  e  f  g  h  i  j
0  0  0  0  0  0  0  0  0  0  0

print (df.iloc[:,np.r_[0,1,5:8]])
   a  b  f  g  h
0  0  0  0  0  0
Run Code Online (Sandbox Code Playgroud)