Я пытаюсь сделать вот что: я должен выполнить цикл над строками здесь, в index [7] он должен был показать «Продать», но мое 2-е условие if не работает

#python #pandas #dataframe

#python #панды #фрейм данных

Вопрос:

Я пытаюсь сделать вот что: я должен выполнить цикл над строками, и если условие удовлетворяет, оно должно печатать в соответствии с моей командой. здесь, в index [7] он должен был показать «Продать», но мое 2-е условие if не работает. Что я делаю не так?

 for i in range (n_steps,(len(extended_stock_data_new)-1)):

    if (extended_stock_data_new["Close"][i]<=extended_stock_data_new["Prediction"][i 1]):
        extended_stock_data_new.loc[[i],"Decision"]="Buy"
        if (extended_stock_data_new["Low"][i 1]<extended_stock_data_new["Prediction"][i 1]<=extended_stock_data_new["High"][i 1]):
            extended_stock_data_new.loc[[i 1],"Decision"]="Sell"
else:
    extended_stock_data_new.loc[[i],"Decision"]="--"
    
extended_stock_data_new.head(50) 

output:
0   2020-01-25 08:00:00 3295.26 3298.26 3291.30 3291.75 NaN NaN
1   2020-01-27 10:00:00 3267.88 3269.01 3253.26 3259.76 NaN NaN
2   2020-01-27 11:00:00 3259.51 3269.51 3258.26 3269.51 NaN NaN
3   2020-01-27 12:00:00 3269.76 3269.76 3265.26 3267.26 NaN NaN
4   2020-01-27 13:00:00 3267.13 3267.26 3258.76 3260.26 NaN NaN
5   2020-01-27 14:00:00 3260.51 3266.76 3260.51 3265.26 NaN NaN
6   2020-01-27 15:00:00 3265.38 3266.01 3262.76 3263.01 3264.800049 Buy
7   2020-01-27 16:00:00 3263.26 3264.26 3260.01 3260.26 3263.800049 Buy
8   2020-01-27 17:00:00 3260.51 3263.13 3259.26 3261.51 3260.699951 Buy
9   2020-01-27 18:00:00 3261.26 3264.01 3259.51 3261.76 3261.600098 Buy
10  2020-01-27 19:00:00 3262.26 3267.26 3257.76 3262.76 3262.100098 Buy
11  2020-01-27 20:00:00 3262.51 3263.01 3250.26 3254.01 3263.300049 Buy
12  2020-01-27 21:00:00 3253.76 3253.76 3240.26 3240.26 3254.800049 Buy
 

Комментарии:

1. Можете ли вы сказать нам, какой столбец чисел в выходных данных имеет какое имя? Похоже, вы можете перезаписать себя, изменив строки 6-7, затем изменив строки 7-8, но трудно сказать, не зная, какие числа какие.

2. индекс, дата, открытие, максимум, закрытие по минимуму

3. Как насчет прогнозирования? Я предполагаю, что это последний столбец, который является NaN для первых 6 строк?

4. нет, последний столбец — это решение

5. Извините, предпоследний столбец.

Ответ №1:

Итак, что происходит, что вы перезаписываете себя:

когда я == 6:

  • вы присваиваете «Buy» строке i
  • вы присваиваете «Продать» строке i 1

когда я == 7:

  • вы присваиваете «Buy» строке i, перезаписывая свой предыдущий ответ.

Если вы не хотите перезаписывать себя, вам нужно добавить проверку к вашему первому условию, чтобы увидеть, существует ли уже значение «Решение».