#python #lambda #syntax #syntax-error
Вопрос:
Почему происходит следующее SyntaxError
?
data['Direction'] = lambda x : 'up' if data['Rolling'].shift(1) < data['Rolling'] else ('down' if data['Rolling'].shift(1) > data['Rolling'])
Комментарии:
1. в чем заключается ошибка? (полный текст важен)
2. Вы упускаете
else
часть для второгоif
. Но это тоже не сделает того, чего ты хочешь.
Ответ №1:
Ты получил по SyntaxError
заслугам ('down' if data['Rolling'].shift(1) > data['Rolling'])
. Если вы хотите, чтобы функция возвращала 'up'
if data['Rolling'].shift(1) < data['Rolling']
и 'down
‘ в противном случае ( data['Rolling'].shift(1) >= data['Rolling']
), вы можете сделать:
lambda x : 'up' if data['Rolling'].shift(1) < data['Rolling'] else 'down'
Или , если вы также хотите, чтобы функция возвращала None
время data['Rolling'].shift(1) == data['Rolling']
, вы можете сделать:
lambda x : 'up' if data['Rolling'].shift(1) < data['Rolling'] else ('down' if data['Rolling'].shift(1) > data['Rolling'] else None)
Комментарии:
1. Это нормально, если бы я просто хотел вернуть «вниз» для противоположного ответа, однако «вниз» также требует теста, и именно этот тест вызывает синтаксическую ошибку. Я подумаю о том, как это происходит, и посмотрю, смогу ли я изменить запрос .. большое вам спасибо, что взглянули на проблему.
2. @JLC Проверьте второй фрагмент кода; он выполняет проверку для
'down'
.