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

时间:2017-06-28 06:03:52

标签: python python-3.x pandas dataframe

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

df.iloc[:,[0,1,range(51,101)]]

但是它引发了错误:

“使用序列”

设置数组元素

虽然如果我只传递范围而不是列索引,它仍在工作。

我也尝试过:

df.iloc[:,[0,1,51:102)]]

显示无效语法。

有人可以在这里指出错误。另外请建议实现功能的替代方法。

2 个答案:

答案 0 :(得分:2)

我认为您需要numpy.r_来获得concnecate指数:

df.iloc[:,np.r_[0,1,51:102]]

样品:

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

答案 1 :(得分:1)

您可以在没有numpy.r_的情况下执行此操作:

new_df = df.iloc[:, [0, 1] + list(range(51,101))]