我有两个熊猫数据框,一个包含所有开放文本电影评论的一列(movie_review_df),另一个(movie_ngrams_df)包含在movie_review_df中找到的最常见的ngram(ngram的前5个= 1和ngram的前5个= 2) .我基本上想编写一个函数来遍历我的movie_ngrams_df中我的单词/单词短语列的每一行,并将它们用作查找以查找包含这些单词/工作短语的评论。想象一下,我的 movie_ngrams_df 在 2 列中有 2 个值。1)a列(ngram_wordphrase)中的单词“love”和b列(ngram_group)中的“one”2)a列中的短语“太长”和b列中的“两个”我认为使用循环和.contains()调用的函数可以工作,但似乎无法理解它。这在某种程度上是我希望它工作的方式。def ngram_lookup (ngram,reviews):appended_df = pd.concat(for word in ngram: reviews_df[reviews_df['reviews'].str.contains('ngram')])return appended_df我想要一个函数来搜索movie_review_df中的每一个电影评论文本并提取包含“爱”这个词的评论。我希望输出是一个新的 df (ngram_detail_df),其中表示的每一行都包含 word_phrase(例如 a 列中的 love),然后是包含单词“love”的完整单个字符串审查(放置在 b 列中)。因此,每个 word_phrase 可能会在 a 列中多次列出。然后(你知道它即将到来)我希望能够为我们的 movie_ngrams_df 中的下一个 word_phrase 做同样的事情,它是“太长”。我想将这些新的“太长”结果附加到我们的“爱”搜索返回的结果中,这样最后,我们就只有一个 df 包含最热门的 word_phrases 和每个存在该 word/word_phrase 的电影评论。
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
怎么样的东西
words = movie_ngrams_df["ngram_wordphrase"].array
ngram_detail_df = movie_review_df.copy()
for word in words:
ngram_detail_df[word] = ngram_detail_df["reviews"].apply(lambda x: word in x)
ngram_detail_df = ngram_detail_df.melt(id_vars=["reviews"])
ngram_detail_df = ngram_detail_df[ngram_detail_df["value"] == True]
ngram_detail_df = ngram_detail_df.loc[:, ["reviews", "variable"]
ngram_detail_df.rename(columns={"variable": "ngram"}, inplace=True)
添加回答
举报
0/150
提交
取消