pandas 如何根据其他 Dataframe 的值筛选行 Dataframe

oknwwptz  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(223)

如何从来自另一个 Dataframe 的类型列中获取基于过滤器的数据行?
我有一个电影 Dataframe 如下:
| 影片名称(_N)|类型|评级|
| - -|- -|- -|
| 万圣节前夕|犯罪、恐怖、惊悚|六点五|
| 没有|恐怖、神秘、科幻|六点九|
| 午夜俱乐部|戏剧,恐怖,神秘|六点七|
| 北方人|动作,冒险,戏剧|第7.1条|
| 猎物|动作,冒险,戏剧|第7.2条|
| 未知|动作,冒险|六、三|
| 舍伍德|犯罪,戏剧,神秘|七点四|
我有一个用户 Dataframe ,如下所示:
| 使用者识别码(_I)|使用者名称(_N)|类型|
| - -|- -|- -|
| 100个|克莉丝汀|恐怖、惊悚、戏剧|
我想把下面的行作为输出,因为用户喜欢恐怖片、惊悚片和戏剧类型。
| 影片名称(_N)|类型|评级|
| - -|- -|- -|
| 万圣节前夕|犯罪、恐怖、惊悚|六点五|
| 没有|恐怖、神秘、科幻|六点九|
| 午夜俱乐部|戏剧,恐怖,神秘|六点七|
| 北方人|动作,冒险,戏剧|第7.1条|
| 猎物|动作,冒险,戏剧|第7.2条|
| 舍伍德|犯罪,戏剧,神秘|七点四|
如何获取“类型”列中的值至少与用户的“类型”首选项之一匹配的“电影”行?

wvmv3b1j

wvmv3b1j1#

试试这个:

pattern = user['Genre'].str.replace(', ', '|')[0]
result = movies.query('Genre.str.contains(@pattern)')
print(result)
qzwqbdag

qzwqbdag2#

该示例使用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)]

相关问题