gpt4 book ai didi

Python iloc 索引之间的区别

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:35 26 4
gpt4 key购买 nike

这里是新手。

我正在尝试学习 Python 并使用数据集,我有点陷入工作的深渊。该语言显然非常强大,但与我以前体验过的任何其他语言都截然不同。

我需要以下方面的一些澄清/帮助/解释。

部分算法代码

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 个 Assets 价格的数据集,从“附加信息”下的图像可以看出

我研究并了解到数据 iloc 是一个 pandas indexing and referencing function

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

问题

  • hs1 = history.iloc[:20], 根据我的研究 python programming tutorial在 pandas dataframe 上 hs1 = history.iloc[:20] 挑出删除 dataframe 中的前 20 列,这是正确的吗?
  • hs2 = history.iloc[:20] 和上面的变量有什么区别?
  • hs3 = history.iloc[-20] 为什么索引中有一个负号 - 而没有 :

附加信息

历史变量创建 3 个 Assets 的数据集

enter image description here

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

最佳答案

在开始任何其他事情之前,我建议阅读 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 到列表的 end 的子切片。

    >>> 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

Purely integer-location based indexing for selection by position.

.iloc[] is primarily integer position based (from 0 to length-1 of the axis), but may also be used with a boolean array.

接受的有点多,但是 Pandas cookbook让它变得简单。基本语法是:

df.iloc[x, y] 

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

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

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

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

考虑一个数据框:

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

引用文献

关于Python iloc 索引之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47068718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com