одиночный позиционный индексатор панд выходит за пределы - PullRequest
0 голосов
/ 07 октября 2019

я посмотрел предыдущие посты на эту тему, но ни одна из них не помогла

def trendFinder():
    uptrend = pd.DataFrame()
    counts = 0
    x = 0
    for i in range(len(df)):
        trendSlot = pd.DataFrame
        trendSlot = (df.loc[x+1:x+10])
        closeAvg = (sum(trendSlot[:]['Close'])/10)
        openAvg = (sum(trendSlot[:]['Open'])/10)
        if trendSlot.iloc[-1]['Close'] > closeAvg:
            print('close average: ',closeAvg)
            print('open average:  ',openAvg)
            print(trendSlot)
            sleep(0.1)
            clear_output()
            counts +=1
        x+=10
    print(counts)

, что в основном происходит здесь, так это то, что на каждой итерации создается мини-фрейм данных, имеющий строки / столбцы исходного df,затем для мини-фрейма данных, если закрытие последней строки больше, чем среднее значение всех закрытий, печатается этот мини-фрейм данных. функция работает некоторое время (я полагаю, до последней итерации), пока что-то не произойдет, что приведет к этой ошибке:

---> 12         if trendSlot.iloc[-1]['Close'] > closeAvg:
...
IndexError: single positional indexer is out-of-bounds

1 Ответ

1 голос
/ 07 октября 2019

Если вы добавляете условие к оператору if, например:

if (len(trendSlot) > 0) and (trendSlot.iloc[-1]['Close'] > closeAvg):

Следует избегать попытки выполнить неудачный trendSlot.iloc[-1], если оно пустое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...