【问题标题】:How to iterate on the rows of a dataframe如何迭代数据框的行
【发布时间】:2018-12-01 18:47:12
【问题描述】:

我正在创建一个脚本,它采用艺术家的数据框,将它们传递给 Spotify API 并返回一些额外的信息。我正在努力解决如何最好地将艺术家的数据框迭代地传递给调用 Spotify 的函数。

我有两个功能:

artists = grabArtists()

返回艺术家列表,例如:

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

然后我有函数抓取 Spotify 艺术家数据...

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

它应该返回一个数据框,其中的列是:Artist、Genres、Images、Popularity、Followers。

提前致谢!

【问题讨论】:

    标签: python pandas spotify spotipy


    【解决方案1】:

    我认为您可以将艺术家作为列表迭代地传递给 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)
    

    【讨论】:

      【解决方案2】:
      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()
      

      【讨论】:

        猜你喜欢
        • 2021-11-17
        • 2014-04-27
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        • 2019-09-29
        • 1970-01-01
        • 2020-10-03
        • 1970-01-01
        相关资源
        最近更新 更多