#python #pandas
#питон #панды
Вопрос:
varv = -1 df: Open VarC Position Date 2019-11-25 10:00:00 30.38 -0.325098 0.0 2019-11-25 16:00:00 30.59 -1.538955 0.0 2019-11-26 10:00:00 30.56 -2.244309 0.0 2019-11-26 16:00:00 30.53 -3.584000 0.0 2019-11-27 10:00:00 30.20 -0.640000 0.0 df.loc[df['VarC'] lt;= varv, 'Position'] = 1
Это не работает. df[‘Позиция’] все еще 0.0. Предложения, как он может установить 1 в «Положение»? Уже попробуйте использовать if и все еще не работает.
Ответ №1:
Попробуйте это:
df['Position'] = df['Position'].where(df['VarC'] gt; varv, 1)
Выход:
print(df) Open VarC Position Date 2019-11-25 10:00:00 30.38 -0.325098 0.0 2019-11-25 16:00:00 30.59 -1.538955 1.0 2019-11-26 10:00:00 30.56 -2.244309 1.0 2019-11-26 16:00:00 30.53 -3.584000 1.0 2019-11-27 10:00:00 30.20 -0.640000 0.0
Комментарии:
1. тоже не работает. он устанавливает все значения равными 1. Ни то, ни другое, если его условие (df[‘varC’]
2. я попробовал, если df1016c[‘Позиция’].где(df1016c[‘VarV’] lt;= varv, 1).любой() == True: df1016c[‘Позиция’] = 1, если df1016c[‘Позиция’].где(df1016c[‘varC’] gt;= varv, -1).любой() == True: df1016c[‘Позиция’] = -1 еще: df1016c[‘Позиция’] = 0 lt;= varv, 1).любой() == Верно: df1016c[‘Позиция’] = 1, если df1016c[‘Позиция’].где(df1016c[‘varC’] gt;lt; не работает, тогда я попытался: df1016c[‘Позиция’] = np.где(df1016c[‘VarV’] все они устанавливают 1 для всех строк!
3. нет, это просто установка
Position
значений на 1, гдеVarC
значения меньше -1. Я добавил вывод для вашего ввода4. Спасибо тебе, Луиджи! это работает!