使用Pandas在csv(python)中存储spotipy输出

时间:2018-01-21 20:20:24

标签: spotipy

我写了一个代码来将spotipy的输出存储到pd.Dataframe:

import pandas as pd
import spotipy
sp = spotipy.Spotify()

from spotipy.oauth2 import SpotifyClientCredentials 

cid ='XXXCIDXXX' 
secret = 'XXXSECRETXXX' 
client_credentials_manager = SpotifyClientCredentials(client_id=cid, 
client_secret=secret) 
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager) 
sp.trace=False 

playlist = sp.user_playlist_tracks('spotify', '37i9dQZF1DX5nwnRMcdReF') 
songs = playlist['items']

df = pd.DataFrame(songs)

df.to_csv('Songs.csv', sep=';', encoding='utf-8', index=True)

但那里有很多我不需要的输出,所以我发现一个代码只输出我需要的数据:

for i, item in enumerate(playlist['items']):
    track = item['track']
    need = (i, track['artists'][0]['name'], track['name'], track['id'])

现在我可以使用print(need)输出我想要的内容,但我不知道如何将数据存储到DataFrame中。

如果有人可以帮助我那会很棒。

谢谢。

1 个答案:

答案 0 :(得分:0)

将您需要的输出附加到单独的列表中,然后将这些列表加载到数据框中:

# appending needed data to separate lists

for i, item in enumerate(playlist['items']):
    track = item['track']
    artist_name.append(track['artists'][0]['name'])
    track_name.append(track['name'])
    track_id.append(track['id']

# loading lists into the dataframe

df = pd.DataFrame({'artist_name':artist_name,'track_name':track_name,'track_id':track_id})