Как перебирать строки в кадре данных - PullRequest
0 голосов
/ 01 декабря 2018

Я создаю сценарий, который принимает данные о художниках, передает их в Spotify API и возвращает некоторую дополнительную информацию.Я борюсь с тем, как лучше передать итерацию данных артистов в функцию, которая вызывает Spotify.

У меня есть две функции:

artists = grabArtists()

, которая возвращает список исполнителей, такой как:

0                                      Gas
1                                   System
3                       Finlay Shakespeare
4                         Boards Of Canada
6    Delia Derbyshire Appreciation Society

Затем у меня есть функция захвата данных Spotify Artist ...

def grabSpotifyData(searchQ):

# ERASE CACHE AND PROMPT FOR USER PERMISSION
client_credentials_manager = SpotifyClientCredentials()
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

# SEARCH FOR AN ARTIST
searchQuery = searchQ
search = sp.search(searchQuery, 1, 0, "artist")

artist = search['artists']['items'][0]

genres = artist['genres']
image = artist['images'][0]['url']
pop = artist['popularity']
followers = artist['followers']['total']

return genres, image, pop, followers

Я могу просто получить кадр данных для одного результата с помощью следующего.Как сделать эту итерацию такой, чтобы она проходила по списку исполнителей и добавляла контекст об исполнителе?

artists = grabArtists()[0]
result = grabSpotifyData(artists)
df = pd.DataFrame([(artists), (result[0]), (result[1]), (result[2]), 
(result[3])])
df = df.T

Он должен возвращать фрейм данных со столбцами: Исполнитель, Жанры, Изображения, Популярность, Подписчики.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018
df = pd.DataFrame()

for artist in artists:
    try:
        results = grabSpotifyData(artist)
    except IndexError:
        pass
    df = df.append(results)

df = pd.DataFrame(df)
df = df.reset_index()
0 голосов
/ 01 декабря 2018

Я думаю, что вы можете передавать художников в виде списка итеративно в API:

df = []
for artist in artists:
    result = grabSpotifyData(artist)
    d0 = pd.DataFrame([(artists), (result[0]), (result[1]), (result[2], (result[3])])
    df.append(d0)

df = pd.concat(df, axis=1)
...