«SyntaxError: неверный синтаксис» при использовании лямбда-функции в pandas .apply - PullRequest
0 голосов
/ 07 февраля 2020

Спасибо, что помогли мне сегодня с моим вопросом.

У меня есть df, подобный приведенному ниже введите описание изображения здесь

Как вы можете видеть, есть тип dict в столбец значение

В столбце есть три ключа для этих слов: значение

идентификатор предложения, offer_id и транзакция

Я пытаюсь создать новый столбец, который получает значение из идентификатора предложения и offer_id

Я пытался использовать лямбду в этом, но это не удается

test2['test'] = transcript.value.apply(lambda x: list(x.values())[0] if (list(x.keys())[0] in ['offer id', 'offer_id']) )

Просто интересно, почему он продолжает говорить "SyntaxError : неверный синтаксис ".

Еще раз спасибо за помощь!

------------------- решение -------- ------------

Спасибо всем, ребята, помогите

test1['test'] = test1.value.apply(lambda x: list(x.values())[0] if (list(x.keys())[0] in ['offer id', 'offer_id']) else np.NaN)

добавив оператор else, он работает ......

Лучший

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

test2['test'] = transcript.value.apply(lambda x: list(x.values())[0] if (list(x.keys())[0] in ['offer id', 'offer_id']) else 'what do you want x to be if the if statement is not fulfilled?')

0 голосов
/ 07 февраля 2020

Когда вы используете if в выражении, вы должны также написать предложение else. Например:

>>> x = 5
>>> 1 if x > 0 else 0
1
>>> 1 if x > 0
  File "<stdin>", line 1
    1 if x > 0
             ^
SyntaxError: invalid syntax

Причина в том, что выражение должно приводить к значению, поэтому if в выражении не имеет смысла, если вы не скажете, каким должен быть результат в обоих случаях. Если вы не говорите, каким должен быть результат, когда условие ложно, то выражение в этом случае не приведет к значению.

Итак, в вашем коде есть синтаксическая ошибка, потому что вы этого не сделали напишите else, чтобы сказать, каким должен быть результат, если list(x.keys())[0] не в ['offer id', 'offer_id'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...