我有一个来自Movielens的数据集,可以在这里找到这里。我的目标是为数据集中已有的所有电影ID添加所有电影的概述(数据集为tmdb和其他数据库提供了电影ID)。
我已经研究了tmdb为开发者提供的文档,但我只能一次提取单个电影的数据。我的目标是为数据框中包含的所有电影ID创建一个循环,并获取每个相应电影的“概述”。
我目前达到的最接近的点是:
pip install tmdbv3apifrom tmdbv3api import TMDbfrom tmdbv3api import Movietmdb = TMDb()tmdb.api_key = 'my API Key'tmdb.language = 'en'tmdb.debug = Truemovie = Movie()# 例如,ID为862的电影m = movie.details(862)print (m.overview)
这将为单个电影的概述提供我想要的结果,但当我尝试创建如下所示的循环时,它完全失败了。这很可能是错误的,但我甚至不知道根据tmdb API是否可以这样做:
movie = Movie()id = movie.details(int(movies.tmdbId))for id in movies["tmdbId"]: # 我的数据框 if id in tmdb.Movies(int(tmdb_id)): # tmdb数据库 print (m.overview)
我也知道这可以通过JSON文件和urllib.request来完成,我见过的最接近的例子是这个,它再次是针对一次一个电影的。
请原谅您可能看到的任何错误,我在这个领域是新手。
提前感谢您。
回答:
我的声望不足以发表评论,所以我在这里指出这一点,似乎您不太理解for循环的工作原理。在for循环中,您定义的id变量将被movies[‘tmdbId’]的值覆盖。
至于解决方案,请尝试这个。
movie = Movie()id = movie.details(int(movies.tmdbId)) # 不确定为什么定义这个变量?for id in movies["tmdbId"]: # 我的数据框,我假设这是可迭代的 if movie.details(int(id)): # tmdb数据库, m = movie.details(int(id)) print (m.overview)