如何获取数据框中的所有唯一字词

时间:2018-05-05 23:16:03

标签: python pandas nlp

我将评论数据集加载到pandas中,作为处理过程的一部分,我希望获得创建Bag of Words的所有独特单词。

enter image description here

由于文本包含在多行中,首先我必须将它们合并。

我试过了:

all_text = df['review_body'].to_string()
words = set(a.split(' '))
words = list(words)

但是我从那里得到了不正确的话,比如:

u'fel...\n1093'

4 个答案:

答案 0 :(得分:2)

words = " ".join(df.review_body).split()

如果您只想保留唯一的非数字字符串,我建议您理解:

words = {
    x for x in ' '.join(
        df.review_body.str.lower().tolist()
    ).split() if x.isalpha()
} 

答案 1 :(得分:2)

假设数据帧如下:

df = pd.DataFrame({'review_body': ['This is review 1', 'This is other review 2', 'this is third review 3']})
print(df)

结果:

              review_body
0        This is review 1
1  This is other review 2
2  this is third review 3

然后,您可以尝试使用cat,然后lowersplit

result = set(df['review_body'].str.cat(sep=' ').lower().split())
print(result)

结果:

{'this', 'is', 'third', 'other', '3', 'review', '2', '1'}

答案 2 :(得分:0)

只是为了玩游戏并提供更多选择:)

df["review_body"].str.lower().str.split(" ").apply(pd.Series).stack().unique()

即。降低和拆分,然后堆叠所有单词并使用unique()

答案 3 :(得分:-1)

评论的代表不够,但除了上面提供的答案外,您还可以使用正则表达式删除字符串中不需要的字符。

import re
string = 'this is a \nstring'
cleanstring = re.sub('[\n]', '', string)

输出:

'this is a string'

这将帮助您清理数据以识别真正的唯一单词,而不是将\ nstring和string视为两个不同的单词。