#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, перезаписывая свой предыдущий ответ.
Если вы не хотите перезаписывать себя, вам нужно добавить проверку к вашему первому условию, чтобы увидеть, существует ли уже значение «Решение».