You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于另一DataFrame的Genre偏好过滤电影DataFrame的行?

筛选匹配用户偏好类型的电影实现方法

以下基于Python Pandas库实现,步骤清晰可复用:

1. 准备示例数据

先构造符合场景的测试DataFrame:

import pandas as pd

# 电影数据集
movies = pd.DataFrame({
    'Movie_Name': ['闪灵', '盗梦空间', '泰坦尼克号', '电锯惊魂', '傲慢与偏见'],
    'Genre': ['Horror', 'Sci-Fi, Thriller', 'Drama, Romance', 'Horror, Thriller', 'Drama'],
    'Rating': [8.4, 8.8, 7.9, 7.6, 7.8]
})

# 用户偏好数据集
users = pd.DataFrame({
    'User_ID': [1, 2],
    'Name': ['张三', '李四'],
    'Preference_Genre': ['Horror, Drama', 'Thriller']
})

2. 提取所有用户的偏好类型集合

先收集所有用户的偏好类型,去重后得到待匹配的类型池:

# 拆分用户偏好并去重,生成类型集合
preferred_genres = set()
for pref in users['Preference_Genre']:
    preferred_genres.update(pref.split(', '))
# 最终得到:{'Horror', 'Drama', 'Thriller'}

3. 筛选符合条件的电影

利用Pandas的str.contains方法结合正则表达式,匹配Genre列中包含至少一个偏好类型的行:

# 构造正则匹配模式:匹配任意一个偏好类型
pattern = '|'.join(preferred_genres)
# 执行筛选,case=False忽略大小写(按需调整)
filtered_movies = movies[movies['Genre'].str.contains(pattern, case=False)]

4. 查看筛选结果

打印筛选后的电影数据:

print(filtered_movies)

输出结果:

Movie_Name           Genre  Rating
0        闪灵           Horror     8.4
1    盗梦空间  Sci-Fi, Thriller     8.8
2    泰坦尼克号   Drama, Romance     7.9
3    电锯惊魂  Horror, Thriller     7.6
4  傲慢与偏见             Drama     7.8

额外说明

  • 若Genre列的分隔符不是, ,需同步调整split方法的参数和正则逻辑
  • 若需要针对单个用户筛选,只需提取该用户的偏好类型即可:
    # 筛选符合用户张三偏好的电影
    target_user_pref = users.loc[users['Name'] == '张三', 'Preference_Genre'].iloc[0].split(', ')
    user_pattern = '|'.join(target_user_pref)
    user_filtered_movies = movies[movies['Genre'].str.contains(user_pattern, case=False)]
    

内容的提问来源于stack exchange,提问作者Annisa Lianda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:55:16