Использование .iloc[[i]]
возвращает Series
. Поэтому, хотя в Series
есть только одно значение, оно возникает ValueError
, потому что вы сравниваете Series
с str
.
Один из способов справиться с этим - использовать .iloc[[i]][0]
. Это «извлечет» строку и позволит провести сравнение между одними и теми же типами.
Лучшим способом было бы выбрать строку и столбец с помощью iloc
. Например,
anz_analysis["Action"] = anz_analysis["Signal"]
for i in range(len(anz_analysis) + 1):
if ((anz_analysis.iloc[i, 'Signal'] == "Buy") & (anz_analysis.iloc[i + 1, 'Signal'] == "Buy")):
anz_analysis["Action"] = anz_analysis.iloc[i, 'Signal'] = "Maintain"
elif (anz_analysis.iloc[i, 'Signal'] == "Sell") & (anz_analysis.iloc[i + 1, 'Signal'] == "Sell"):
anz_analysis.iloc[i, 'Signal'] = "Maintain"
Редактировать Обновлен оператор elif
в соответствии с наблюдением @ 6502 вероятной ошибки в коде OP. Также решено удалить ложное начальное значение 0
в range
.