Python iloc索引之间的区别

时间:2017-11-02 06:11:39

标签: python pandas dataset ipython

新手在这里。

我正在尝试学习Python并使用数据集,我已经在工作中深入了解。这种语言显然非常强大,但与之前经历过的其他事情截然不同。

我需要对以下内容进行一些澄清/帮助/解释。

部分Algo代码

history = data.history(context.stock_list, fields="price", bar_count=300, frequency="1d")
hs = h.iloc[-20:]
p = h.iloc[-1]

所显示的3个变量之间的区别是什么?

hs1 = history.iloc[:20]   
hs2 = history.iloc[20:]
hs3 = history.iloc[-20]

history创建了4个资产价格的数据集,如“附加信息”下的图片所示

我研究和学习的数据ilocpandas indexing and referencing function

但是,我不明白的是[:20][20:][-20]索引(?)附加到上面显示的3个示例变量中的iloc函数

问题

  • hs1 = history.iloc[:20],根据我在关于pandas数据框hs1 = history.iloc[:20]的{​​{3}}之后的研究,单个删除会删除数据框中的前20列,这是正确的吗?
  • hs2 = history.iloc[:20]上述变量有什么区别?
  • hs3 = history.iloc[-20]为什么索引中有减号-而没有:

其他信息

历史记录变量创建3个资产的数据集

python programming tutorial

希望这是有道理的,如果您需要任何其他信息,请发表评论任何帮助和建议非常感谢。

1 个答案:

答案 0 :(得分:3)

在开始其他任何事情之前,我建议您阅读Understanding Python's slice notation以获得有关python切片符号如何工作的一流见解。特别是,请查看可用的不同切片模式:

a[start:end] # items start through end-1
a[start:]    # items start through the rest of the array
a[:end]      # items from the beginning through end-1
a[:]         # a copy of the whole array
  • a[start:end]会将索引start(包括)的子切片返回到end - 1

    >>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> lst[2:5]
    [3, 4, 5]
    
  • a[start:]返回从start结尾的的子切片。

    >>> lst[5:]
    [6, 7, 8, 9, 10]
    
  • a[:end]列表开头返回一个子切片,直到end - 1

    >>> lst[:5]
    [1, 2, 3, 4, 5]
    
  • a[:]只返回同一列表的新副本。

    >>> lst[:]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

理解这一点,并且您已经理解了数据框索引。

正如我已经提到的,iloc用于通过索引选择数据框子请求,并且适用相同的规则。这是文档:

  

DataFrame.iloc

     

纯粹基于整数位置的索引,用于按位置选择。

     

.iloc[]主要是基于整数位置(从0length-1   轴),但也可以与布尔数组一起使用。

接受它有点多,但是大熊猫cookbook使它变得简单。基本语法是:

df.iloc[x, y] 

其中x是行索引/切片,y是列索引/切片。如果省略第二个参数,则假定行切片。在您的情况下,您有:

  • history.iloc[:20]返回前20行。

  • history.iloc[20:]在前20行后返回所有内容。

  • history.iloc[-20],被解释为history.iloc[len(history) - 20],它是 end 的第20行(负数索引指定从末尾开始索引)。

考虑数据框:

df

   A
0  0
1  1
2  2
3  3
4  4
5  5
6  6
7  7
8  8
9  9

以下是不同的切片模式。

df.iloc[:5]

   A
0  0
1  1
2  2
3  3
4  4
df.iloc[5:]

   A
5  5
6  6
7  7
8  8
9  9
df.iloc[-5]

A    5
Name: 5, dtype: int64

参考文献