使用 Spotipy API 循环遍历 DataFrame - 需要帮助
Using Spotipy API to Loop Through a DataFrame - Help Needed
我有一个嵌套的 for 循环,它首先使用 Spotipy API 根据 DataFrame 值搜索歌曲名称。此 for 循环旨在将 json 输出中的值添加到列表中。
这是我调用的 DataFrame:
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**
我的计划是将这些列表附加到上面的 DataFrame 中,捕获每首歌曲的流行度,然后删除所有不需要的列。
但是,我无法使嵌套的 for 循环正常工作:for i in range (searchtrack):
。我尝试使用范围内的 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'])
我有一个嵌套的 for 循环,它首先使用 Spotipy API 根据 DataFrame 值搜索歌曲名称。此 for 循环旨在将 json 输出中的值添加到列表中。
这是我调用的 DataFrame: 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**
我的计划是将这些列表附加到上面的 DataFrame 中,捕获每首歌曲的流行度,然后删除所有不需要的列。
但是,我无法使嵌套的 for 循环正常工作:for i in range (searchtrack):
。我尝试使用范围内的 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'])