前提・実現したいこと
[Python]
SpotifyのWeb APIを用いて、数値化した楽曲の特徴を範囲入力し、出力するようなプログラムを考えています。(その楽曲の特徴は0から1です。
入力した範囲内の楽曲を抽出したいところですが、うまくいきません。
どう考えたらいいでしょうか。
よろしくお願いいたします。
###入力例
min : 0.36
MAX : 0.52
発生している問題・エラーメッセージ
KeyError: "None of [Float64Index([0.461, 0.497, 0.389, 0.375, 0.378, 0.393, 0.497, 0.376, 0.435,\n 0.372, 0.374],\n dtype='float64')] are in the [columns]"
該当のソースコード
python
1import spotipy 2import spotipy.util as util 3import pandas as pd 4------------------------------------------------- 5def track_info(limit = 50): 6 saved_tracks = sp.current_user_saved_tracks(limit = limit, offset = 50) 7 8 track_id = lambda i: saved_tracks['items'][i]['track']['id'] 9 track_name = lambda i: sp.track(track_id(i))['name'] 10 11 info = [[track_id(i), track_name(i)] for i in range(limit)] 12 return pd.DataFrame(info, columns = ['track_id','track_name']) 13 14#上で取得した楽曲の特徴を取得 15def track_features(track_ids, limit = 50): 16 return pd.DataFrame(sp.audio_features(track_ids)) 17df = pd.DataFrame(sp.audio_features(track_info()['track_id'])) 18mnum = float(input('min : ')) 19Mnum = float(input('MAX : ')) 20def get_track_from_features(): 21 info_valence = pd.concat([track_info(), track_features(track_info()['track_id'])], axis = 1) 22 info_valence = df.query('valence <= @Mnum and valence >= @mnum') 23 return info_valence[info_valence['valence']] 24print(get_track_from_features()[['track_id', 'track_name', 'valence']]) 25
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー