проблемы с наличием и внутри np.where () - PullRequest
1 голос
/ 03 февраля 2020

У меня довольно странная проблема с np.where, из-за которой возникает вопрос, следует ли мне использовать другую функцию вместо этого.

Лог c выглядит следующим образом: Если и только если «trendup» И «trendown» имеют значение «False», то «No_trend», в противном случае «trending»

как-то выводится неправильно, но я не уверен, что выключено.

    Id  Trendup  Trendown
0  001    False     False
1  002    False     False

и строка кода:

forecast['trend_status'] = np.where((forecast['Trendup'] == 'False') & (forecast['Trendown'] == 'False'), 'Not_trending', 'trending')

и неправильный вывод:

    Id  Trendup  Trendown trend_status
0  001    False     False     trending
1  002    False     False     trending

In в этом случае это должно быть "Not_trending" в столбце trend_status, так как два предыдущих столбца имеют значение False. Я предполагаю, что проблема в & заявлении. Я посмотрел на np.logical_and (), но не похоже, что это то, что я ищу. Приветствуется любая помощь

0  001    False      True  Not_trending
1  002    False      True  Not_trending

Что может быть не так? Теперь я был так близок к этому вопросу, что, возможно, не вижу очевидного.

1 Ответ

2 голосов
/ 03 февраля 2020

Кажется, проблема в том, что вы путаете логические значения со строками. При работе с логическими значениями вы должны использовать логические операторы Вы должны делать что-то вроде:

np.where(~(forecast['Trendup'] | forecast['Trendown']), 'Not_trending', 'trending')
# array(['Not_trending', 'Not_trending'], dtype='<U12')

Вы можете проверить это в случае:

print(df.dtypes)

Id          int64
Trendup      bool
Trendown     bool
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...