Можете ли вы добавить условие в лямбда-функцию? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть следующий код:

clean_tweets['tweet'] = clean_tweets['tweet'].apply(lambda x: remove_noise(x))

Я хочу добавить logi c добавить условие, что remove_noise выполняется, только если твит является строкой

Возможно ли это сделать, есть ли альтернативные способы сделать это?

Ответы [ 2 ]

3 голосов
/ 05 мая 2020

Да, вы можете использовать так называемое троичное выражение в Python, например:

(result_if_clause_is_true) if (clause) else (result_if_clause_is_false)

В вашем конкретном c case:

lambda x: remove_noise(x) if isinstance(x, str) else x

Что-нибудь еще Однако сложная, чем операция if / else, должна стать отдельной функцией.

Обратите внимание, что это выражение можно использовать во многих других местах, а не только в лямбдах:

x = y**2 if y < 10 else y/2  # assignment
1 голос
/ 05 мая 2020
  • lambda x: remove_noise(x) это просто remove_noise

  • Вероятно, вам следует добавить logi c в remove_noise функцию:

    def remove_noise(x):
        if not isinstance(x, str):
            return x # or None or whatever other value
        # handle the case where x is a string
    

В целом:

def remove_noise(x):
    if not isinstance(x, str):
        return x # or None or whatever othe value
    # handle the case where x is a string

clean_tweets['tweet'] = clean_tweets['tweet'].apply(remove_noise)
...