【问题标题】:How to use pandas column values as lookup within other dataframe如何使用 pandas 列值作为其他数据框中的查找
【发布时间】:2019-04-16 17:02:01
【问题描述】:

我有两个 pandas 数据帧,一个包含所有开放文本电影评论 (movie_review_df) 的一列,另一个 (movie_ngrams_df) 包含最常见的 ngram(ngram 的前 5 个 = 1,ngram 的前 5 个 = 2)在 movie_review_df 中找到。

我本质上想编写一个函数,它会遍历我的 movie_ngrams_df 中我的单词/单词短语列的每一行,并将它们用作查找以查找包含这些单词/工作短语的评论。

假设我的 movie_ngrams_df 在 2 列中有 2 个值。

1) a 列 (ngram_wordphrase) 中的单词“love”和 b 列 (ngram_group) 中的“one”

2) a 列中的短语“too long”和 b 列中的“two”

我认为使用循环和.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 中的每个电影评论文本并提取包含“love”一词的评论。我希望输出是一个新的 df (ngram_detail_df),其中表示的每一行都包含 word_phrase(例如 a 列中的 love),然后是包含单词“love”的完整单个字符串审查(放置在 b 列中)。因此,每个 word_phrase 可能会在 a 列中多次列出。

那么(你知道它即将到来)我希望能够为我们的 movie_ngrams_df 中的下一个 word_phrase 做同样的事情,它是“太长”。我想将这些新的“太长”结果附加到我们的“爱”搜索返回的结果中,这样最后,我们就只有一个 df,其中包含最热门的 word_phrases 和每个存在该 word/word_phrase 的电影评论。

【问题讨论】:

    标签: python pandas function for-loop


    【解决方案1】:

    类似的东西呢

    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)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2021-02-22
      • 2019-04-06
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2019-06-26
      • 2021-11-16
      相关资源
      最近更新 更多