使用Spotipy API循环通过数据帧-需要帮助



我有一个嵌套的for循环,它首先使用Spotipy API基于DataFrame值搜索歌曲名称。这个for循环旨在将json输出中的值添加到列表中。

这是我正在调用的DataFrame:熊猫数据帧

for循环提取每个艺术家的名字和歌曲,在spottipy中搜索歌曲,并将这些值附加到列表中。这是我的代码:

for index, row in df.iterrows():
search_query = "artist:" + str(row["artist"]) + " track:" + str(row["title"])
track_id = sp.search(q = search_query, limit= 1, offset = 0, market= 'US', type = 'track')
print(track_id)
searchtrack = len(track_id["tracks"]["items"])
track_name = []
ids = []
popularity = []
for i in range (searchtrack):
track_name.append(i['name'])
ids.append(i['id'])
popularity.append(i['popularity'])

输出:

json output....
Traceback (most recent call last):
line 111, in <module>
track_name.append(i['name'])
TypeError: 'int' object is not subscriptable
ile " line 111, in <module>
bash: syntax error near unexpected token `newline'
bash: syntax error near unexpected token `i['name']'
**TypeError: 'int' object is not subscriptable**

我的计划是将这些列表附加到上面的DataFrame中,捕捉每首流行歌曲,然后删除任何不需要的列。

但是,我无法使嵌套的for循环正常工作:for i in range (searchtrack):。我曾尝试使用range中的i、t来枚举,以及其他解决方案来将每个搜索到的值添加到列表中、生成输出并附加到列表中,但没有成功。我要么得到相同歌曲值的多行,要么得到关于不可脚本化(如上所述(或不可调用值的错误。

关于如何让它发挥作用,有什么建议吗?

在循环中,i只是一个增量整数值,要访问相应的轨道,您应该使用track_id["tracks"]["items"][i],因此循环变为:

tracks = track_id["tracks"]["items"]
for i in range (searchtrack):
track_name.append(tracks[i]['name'])
ids.append(tracks[i]['id'])
popularity.append(tracks[i]['popularity'])

最新更新