新手在这里。
我正在尝试学习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个资产价格的数据集,如“附加信息”下的图片所示
我研究和学习的数据iloc
是pandas 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个资产的数据集
希望这是有道理的,如果您需要任何其他信息,请发表评论任何帮助和建议非常感谢。
答案 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[]
主要是基于整数位置(从0
到length-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
参考文献