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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:36:55