我已经在这里问过一次这个问题,但我想澄清一下:Pandas: I want to sum a count if a string exists in any one of several columns and add this count to another dataframe with the searched term
我有一个视频数据框,其中有几列标签(字符串),与此测试数据类似:
videos = [(1, 'cool video','drama','horror'), (2, 'nice video','sports','drama'),
(3,'super video','video','scary horror')]
df = pd.DataFrame(data=videos, columns=['video_id', 'title','tag_1','tag_2'])
video_id title tag_1 tag_2
0 1 cool video drama horror
1 2 nice video sports drama
2 3 cool video video scary horror
搜索词“df_search_terms”的第二个数据框有一列词。我想看看这些搜索词是否在其中一个视频列(标题或标签)中至少出现一次,如果出现,则在搜索词的数据帧中增加一个计数器(也就是说,OK,我们为视频找到了这个词一次,所以+=1)。为了澄清,我想知道在包含+/-1000个视频的数据框中,至少有一列中搜索词匹配了多少次
在我的另一个问题中,我有两种解决方案,以下是其中之一:
search_re = '(' + df_search_terms.search_term.str.cat(sep=')|(') + ')'
df_search_terms['number_matching_videos'] = (
df[['title','tag_1','tag_2']]
.agg(' '.join, axis=1)
.str.extractall(search_re)
.notnull().sum())
但是,这会产生以下结果:
search_term number_matching_videos
0 drama 2
1 horror 2
2 sports 1
3 video 4
匹配视频的数量是4,而我希望它是3(有3个匹配行)
目前没有回答
相关问题 更多 >
编程相关推荐