DataFrame条件匹配赋值问题:根据文件名返回对应电影标题
解决DataFrame中根据文件名匹配电影标题的问题
我看出来你的问题啦——你的函数之所以会返回整个title列,是因为当找到匹配的文件名时,你直接把整个df_img['title']列赋值给了m_title,而不是对应匹配行的单个标题值。而且如果没有找到匹配项的话,函数还可能因为m_title未定义而报错。
下面给你几种靠谱的解决方法:
方法1:用布尔索引(推荐,更高效)
利用pandas的矢量化查询,直接筛选出匹配的行,然后提取对应的标题:
def get_movie_title(img_name, df_img): # 筛选出movie_name匹配的行 matched_rows = df_img[df_img['movie_name'] == img_name] # 如果有匹配结果,返回第一行的title(假设文件名唯一) if not matched_rows.empty: return matched_rows['title'].iloc[0] # 没有匹配时返回None或者你想要的默认值 return None
方法2:修正循环写法(适合理解逻辑)
如果你想保留循环的方式,要遍历每一行并提取对应行的标题,而不是整个列:
def get_movie_title(img_name, df_img): # 遍历DataFrame的每一行 for _, row in df_img.iterrows(): if row['movie_name'] == img_name: # 返回当前行的title值 return row['title'] # 遍历完没找到匹配,返回默认值 return None
补充说明:
- 推荐用方法1,因为pandas的矢量化操作比逐行循环效率高得多,尤其是当你的DataFrame数据量很大的时候。
- 假设你的
movie_name列里的文件名是唯一的,如果有重复的情况,你可能需要根据需求调整(比如返回所有匹配的标题列表)。
测试一下:当你传入"Movie 089.mp4",两种方法都会正确返回"Lord of the rings"啦。
内容的提问来源于stack exchange,提问作者snaz
相关产品推荐
相关产品推荐

