![](/img/trans.png)
[英]How to combine rows in dataframe based on if a row contains a value in another row
[英]How to filter row dataframe based on value of another dataframe
如何从来自另一个 dataframe 的流派列中获取基于过滤器的数据行?
我有一部电影 dataframe 如下:
电影名称 | 类型 | 评分 |
---|---|---|
万圣节 | 犯罪、恐怖、惊悚 | 6.5 |
没有 | 恐怖、悬疑、科幻 | 6.9 |
午夜俱乐部 | 剧情、恐怖、悬疑 | 6.7 |
北方人 | 动作, 冒险, 剧情 | 7.1 |
猎物 | 动作, 冒险, 剧情 | 7.2 |
神秘海域 | 动作、冒险 | 6.3 |
舍伍德 | 犯罪、剧情、悬疑 | 7.4 |
我有一个用户 dataframe 如下:
用户身份 | 用户名 | 类型 |
---|---|---|
100 | 恭 | 恐怖、惊悚、剧情 |
我想获取以下行作为 output,因为用户喜欢恐怖、惊悚和戏剧类型。
电影名称 | 类型 | 评分 |
---|---|---|
万圣节 | 犯罪、恐怖、惊悚 | 6.5 |
没有 | 恐怖、悬疑、科幻 | 6.9 |
午夜俱乐部 | 剧情、恐怖、悬疑 | 6.7 |
北方人 | 动作, 冒险, 剧情 | 7.1 |
猎物 | 动作, 冒险, 剧情 | 7.2 |
舍伍德 | 犯罪、剧情、悬疑 | 7.4 |
如何获取电影行,其中流派列中的值至少与用户的流派首选项之一匹配?
尝试这个:
pattern = user['Genre'].str.replace(', ', '|')[0]
result = movies.query('Genre.str.contains(@pattern)')
print(result)
该示例使用 for 循环获取 df2 上每个用户的列表
import pandas as pd
df=pd.read_csv("db1.csv",header=[0]) # movies
df2=pd.read_csv("db2.csv",header=[0]) # users
for ir,row in df2.iterrows():
gen=row["Genre"].replace(",","|").replace(" ","")
filtereddf=df[df["Genre"].str.contains(gen)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.