Проверьте, верно ли условие с .loc и если установлено 1

#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. Спасибо тебе, Луиджи! это работает!