在Pandas iloc中同时传递列索引和范围
问题内容:
假设我有一个包含100列的数据框。我只想为所有行选择0,1和51-100列。我现在正在尝试这样的事情:
df.iloc[:,[0,1,range(51,101)]]
但这会引发错误:
“使用序列设置数组元素”
虽然如果我只传递范围而不是列索引,这是可行的。
我也尝试过:
df.iloc[:,[0,1,51:102)]]
它显示了无效的语法。
有人可以在这里指出错误。还请提出实现功能的替代方法。
问题答案:
我认为您需要numpy.r_
并发索引:
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