Удалить бессмысленные слова из столбца данных - PullRequest
0 голосов
/ 31 марта 2019

Столбец dataframe содержит предложения, содержащие несколько трех- и двухбуквенных слов, которые не имеют значения.Я хочу найти все такие слова в столбце данных и затем удалить их из столбца данных.df-

id      text
1       happy birthday syz
2       vz
3       have a good bne weekend 

Я хочу 1) найти все слова длиной менее 3 (это должно вернуть syz, vz, bne) 2) удалить эти слова (обратите внимание, что стоп-слова уже были удалены, поэтомуслов типа «a», «the» в столбце датафреймов не существует, приведенный выше фрейм данных является лишь примером)

Я пробовал приведенный ниже код, но он не работает

def word_length(text):
    words = []
    for word in text:
        if len(word) <= 3:
            words.append(word)
    return(words)

short_words = df['text'].apply(word_length).sum()

вывод должен быть-

id      text
1       happy birthday 
2       
3       have good weekend 

1 Ответ

1 голос
/ 31 марта 2019

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

Перепишите функцию, которую вы применяете, в форме:

 def filter_short_words(text):
    return "".join([for w in text.split() if len(w) > 3])

Это работает.

...