我将评论数据集加载到pandas中,作为处理过程的一部分,我希望获得创建Bag of Words的所有独特单词。
由于文本包含在多行中,首先我必须将它们合并。
我试过了:
all_text = df['review_body'].to_string()
words = set(a.split(' '))
words = list(words)
但是我从那里得到了不正确的话,比如:
u'fel...\n1093'
答案 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
,然后lower
和split
:
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视为两个不同的单词。