如何使用 pandas 列值作为其他数据框中的查找

我有两个熊猫数据框,一个包含所有开放文本电影评论的一列(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 的电影评论。


慕盖茨4494581
浏览 155回答 1
1回答

慕运维8079593

怎么样的东西words = movie_ngrams_df["ngram_wordphrase"].arrayngram_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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python