Я делаю свой первый проект на Python.У меня есть пандас dataframe под названием df с двумя столбцами «закрыть» и «объем».Я хочу рассчитать / получить столбец OBV на основе первых двух столбцов.Формула приведена ниже;
Если закрытие выше предыдущего закрытия, то: Текущий OBC = Предыдущий OBC + Текущий объем
Если цена закрытия ниже предыдущей цены закрытия, то: Текущий OBV= Предыдущий OBV - Текущий объем
Если цены закрытия равны предыдущей цене закрытия, то: Текущий OBV = Предыдущий OBV (без изменений)
Объем закрытия OBC 30 2500 nan 32 3000 5500 25 2700 280035 4000 6800 20 1000 5800
Я использую этот код:
for i in df.close[1:]:
if i > df.close.shift(-1):
df["OBC"] = df.volume + df.OBC.shift(-1)
elif i < df.close.shift(-1):
df["OBC"] = df.OBC.shift(-1) - df.volume
else:
df["OBC"] = df.OBC
, и я получаю эту ошибку: ValueError: Истинное значение Series является неоднозначным.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().
Я смотрел на этот вопрос, но не получил никакой помощи. Значение Истины Серии неоднозначно.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ()
Помимо этой ошибки, я чувствую, что код может столкнуться с проблемами вРасчет правильного OBV.Любая помощь будет иметь большое значение.