选择最后n列并排除数据框中的最后n列

时间:2015-10-09 16:01:15

标签: python pandas indexing dataframe object-slicing

我如何:

  1. 选择数据框中的最后3列并创建新数据框?
  2. 我试过了:

    y = dataframe.iloc[:,-3:]
    
    1. 排除最后3列并创建新的数据框?
    2. 我试过了:

      X = dataframe.iloc[:,:-3]
      

      这是对的吗?

      我在代码中进一步得到数组维度错误,并希望确保此步骤正确。

      谢谢

2 个答案:

答案 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方法。