Использование лямбды для удаления вхождений слов ниже определенного времени в серии Python - PullRequest
1 голос
/ 20 января 2020

У меня есть этот массив из 41 000 строк в кадре данных df :

column1                                   column2     column2
content in not below like this amsterdam  nan         sport
massive create non-programming question   nan         religion 

Я хочу УДАЛИТЬ ВСЕ СЛУЧАИ СЛОВА НИЖЕ 5 РАЗ ИЛИ РАВНЫЕ в column1 так что df фрейм данных будет выглядеть так:

column1                                   column2     column2
content amsterdam                         nan         sport
massive create non-programming question   nan         religion

Кто-нибудь может мне помочь, пожалуйста?

моя первоначальная попытка выглядит так:

df['column1'] = df['column1'].apply(filter(lambda x : (x, df['column1'].count < 4)), set(df['column1']))

, но я получаю сообщение об ошибке:

TypeError: filter expected 2 arguments, got 1

1 Ответ

3 голосов
/ 21 января 2020

Вероятно, лучше использовать функцию для этого, поскольку одна лямбда будет слишком сложной и не очень чистой.

регулярное выражение преобразует элементы в список слов. Затем фильтр сохраняет слова больше 5.

import re

def remove_five_or_less(line):
    word_list = re.sub("[^\w]", " ",  line["column1"]).split()
    filtered_list = filter(lambda x: len(x) > 5, word_list)
    return " ".join(filtered_list)

df["column1"] = df.apply(lambda x: remove_five_or_less(x), axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...