Python 从dataframe列中删除无意义的字

Python 从dataframe列中删除无意义的字,python,nlp,text-processing,Python,Nlp,Text Processing,dataframe列包含几个三个字母和两个字母的单词没有意义的句子。我想在dataframe列中找到所有这样的单词,然后将它们从dataframe列中删除。 df- 我想1)找到所有长度小于3的单词。(应返回syz、vz、bne) 2) 删除这些单词 (请注意,stopwords已经被删除,因此像“a”、“the”这样的单词现在不存在于dataframe列中,上面的dataframe只是一个示例) 我尝试了下面的代码,但不起作用 def word_length(text): words

dataframe列包含几个三个字母和两个字母的单词没有意义的句子。我想在dataframe列中找到所有这样的单词,然后将它们从dataframe列中删除。 df-

我想1)找到所有长度小于3的单词。(应返回syz、vz、bne) 2) 删除这些单词 (请注意,stopwords已经被删除,因此像“a”、“the”这样的单词现在不存在于dataframe列中,上面的dataframe只是一个示例)

我尝试了下面的代码,但不起作用

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()

将函数应用于一列字的顺序,而实际数据是一列字符串(符号的顺序) 您还应该删除.sum(),因为它是完全冗余的

重写表单中应用的函数:

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

这很有效

为什么“a”仍然在预期的输出中?使用字符长度来表示无意义的单词好吗?@tripleee我更新了它。@Yusufsn如果你有其他有效的方法,那么我肯定也可以实现它。我只是觉得这可能是一种方法。然后像这样调用函数-
short\u words=df['text']。apply(filter\u short\u words).sum()
?像这样调用函数会给我一个错误-'list'对象没有属性'split'不,您不需要。sum()它负责数值列值的求和。使用result=df['text'].apply(filter_short_words)它给我相同的错误列表对象没有属性拆分检查应用到的列的类型。如果它是string(您给出了一个带有string列的示例数据),那么我的函数可以工作。如果它是list(似乎活动数据是list),那么remove.split()可以工作…但我需要对此进行一些修改…是否可以将这些单词附加到一个空列表中,然后返回该列表?如果是这样,怎么做?
id      text
1       happy birthday 
2       
3       have good weekend 
 def filter_short_words(text):
    return "".join([for w in text.split() if len(w) > 3])