需要帮助时,使用SpotipyAPI循环遍历数据帧

2024-09-29 22:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套的for循环,它首先使用spotipyapi根据数据帧值搜索歌曲名称。此for循环旨在将json输出中的值添加到列表中

这是我正在调用的数据帧: pandas dataframe

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

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**

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

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

关于如何让它工作有什么建议吗


Tags: 数据nameinidjson列表forsearch
1条回答
网友
1楼 · 发布于 2024-09-29 22:29:41

在循环中,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'])

相关问题 更多 >

    热门问题