Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表索引超出范围-Python/Pandas_Python_Python 3.x_Pandas - Fatal编程技术网

列表索引超出范围-Python/Pandas

列表索引超出范围-Python/Pandas,python,python-3.x,pandas,Python,Python 3.x,Pandas,您好,我正在使用pandas分析一些股票数据来编写这段python代码。我使用了两个太多的循环来获取累积利润。但它给了我列表索引超出范围的错误。有人能帮忙吗?df是我正在使用的数据帧,它大约有10列,包括“invest”和“percentchange”。df['invest']列都是二进制数字1或0,df['percent change']是股价相对于最后一天的变化。这里的windows意味着,如果我看到windows连续0,例如2个连续0,我将购买该股票,并在第二天将其出售 这是我的任务。这不

您好,我正在使用pandas分析一些股票数据来编写这段python代码。我使用了两个太多的循环来获取累积利润。但它给了我列表索引超出范围的错误。有人能帮忙吗?df是我正在使用的数据帧,它大约有10列,包括“invest”和“percentchange”。df['invest']列都是二进制数字1或0,df['percent change']是股价相对于最后一天的变化。这里的windows意味着,如果我看到windows连续0,例如2个连续0,我将购买该股票,并在第二天将其出售

这是我的任务。这不是真正的股票分析。因此,请不要过于重视分析方法。这些只是为了演示数据科学中的python

count=0
countseq=0
principal=100
windows=[1,2,3,4,5]
profit_loss=[0,0,0,0,0]
for i in windows:
    for j in range(len(df)-1):
        if df['invest'][j]==0:
            count+=1
            if count==i:
                profit_loss[i]+=principal*df['percent change'][j+1]
                count=0 
                countseq+=1


IndexError                                Traceback (most recent call last)
<ipython-input-119-53972da7243a> in <module>()
     10             count+=1
     11             if count==i:
---> 12                 profit_loss[i]+=principal*df['percent change'][j+1]
     13                 count=0
     14                 countseq+=1

IndexError: list index out of range
count=0
countseq=0
本金=100
窗口=[1,2,3,4,5]
损益=[0,0,0,0,0]
对于windows中的i:
对于范围内的j(透镜(df)-1):
如果df['invest'][j]==0:
计数+=1
如果计数=i:
损益[i]+=本金*df[变动百分比][j+1]
计数=0
countseq+=1
索引器回溯(最后一次最近调用)
在()
10计数+=1
11如果计数=i:
--->12损益[i]+=本金*df[变动百分比][j+1]
13计数=0
14 countseq+=1
索引器:列表索引超出范围

您正在使用最大值为
5
windows
的值对
损益进行索引,其最大索引为
4
。请记住,python是零索引的

try
对于范围内的j(len(df['percent change']):
不,它不起作用。我想这是因为我,但我不确定@RuzihmYou是否在使用
windows
,max
5
的值来索引到
损益中,其最大索引是
4
。请记住,python是零索引的。换句话说,对范围内的i(len(损益))执行
对范围内的j执行
(len(df['percent change')):
它成功了@安德森