Сравнить логическую серию - PullRequest
0 голосов
/ 23 января 2019

Мне нужна помощь.

У меня есть фрейм данных со столбцом int.Я хочу проверить эти значения.

test1 = (data['CC'].shift(1) > 50) & (data['CC'] < 50)
test2 = (data['CC'].shift(1) < -50) & (data['CC'] > -50)

Этот код работает и возвращает серию из 2000 строк.У меня нет проблем с этим.

0    False
1    False
2    False
3    False
4    False
Name: CCI, dtype: bool

Я хочу использовать эту серию для добавления нового столбца.

if(test1):
    data['Sloop'] = '+S'
elif(test2):
    data['Sloop'] = '-S'
else:
    data['Sloop'] = 'N'

Оператор if не работает:

ValueError: Значение истинности Серии неоднозначно.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Конечно, здесь есть test1 и test2.Реальный код:

if((data['CC'].shift(1) > 50) & (data['CC'] < 50)):
    data['Sloop'] = '+S'
elif((data['CC'].shift(1) < -50) & (data['CC'] > -50)):
    data['Sloop'] = '-S'
else:
    data['Sloop'] = 'N'

Та же ошибка.Пожалуйста, помогите.

Спасибо

1 Ответ

0 голосов
/ 23 января 2019

Использование numpy.select:

test1 = (data['CC'].shift(1) > 50) & (data['CC'] < 50)
test2 = (data['CC'].shift(1) < -50) & (data['CC'] > -50)

data['Sloop'] = np.select([test1, test2], ['+S','-S'], default='N')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...