[英]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.