我如何:
我试过了:
y = dataframe.iloc[:,-3:]
我试过了:
X = dataframe.iloc[:,:-3]
这是对的吗?
我在代码中进一步得到数组维度错误,并希望确保此步骤正确。
谢谢
答案 0 :(得分:9)
最有效的方法:
1。选择最后n列
df1 = df.iloc[:,-n:]
2。排除最后n列
df1 = df.iloc[:,:-n]
答案 1 :(得分:0)
这是因为使用整数索引(ix选择标签超过-3而不是位置,这是设计的:请参阅pandas中的整数索引“gotchas”*)。
*在较新版本的pandas中,喜欢使用loc或iloc来消除ix作为位置或标签的歧义:
df.iloc [-3:] 看文档。
正如韦斯所指出的,在这种特殊情况下你应该只使用尾巴!
还应该注意,在Pandas pre-0.14中,iloc会在越界访问时引发IndexError,而.head()和.tail()则不会:
概率pd。的版本强> '0.12.0' df = pd.DataFrame([{“a”:1},{“a”:2}]) df.iloc [-5:] ... IndexError:切片上的越界(结束) df.tail(5) 一个 0 1 1 2 旧答案(折旧方法):
您可以使用irows DataFrame方法来克服这种歧义:
在[11]中:df1.irow(切片(-3,无)) 出[11]: STK_ID RPT_Date TClose销售折扣 8 568 20080331 38.75 12.668 NaN 9 568 20080630 30.09 21.102 NaN 10 568 20080930 26.00 30.769 NaN 注意:Series有一个类似的iget方法。