0
features = {}
all_track_ids = list(df['song_id'].unique())
start = 0
num_tracks = 100
while start < len(all_track_ids):
 tracks_batch = all_track_ids[start:start+num_tracks]
 features_batch = sp.audio_features(tracks_batch)
 features.update({ track_id : track_features 
                 for track_id, track_features in zip(tracks_batch, features_batch) })
 start += num_tracks



features['1mqlc0vEP9mU1kZgTi6LIQ']


tracks = pd.DataFrame.from_dict(features, orient='index')
tracks

I want to get the audio features of songs in spotify. But, I am trying to convert this dictionary into a dataframe, whose columns will be these features, for example valence, danceability and it shows this:

AttributeError                 Traceback (most recent call last)
in <module>
----> 1 tracks = pd.DataFrame.from_dict(features, orient='index')
  2 tracks

in from_dict(cls, data, orient, dtype, columns)
1582                 # TODO speed up Series case
1583                 if isinstance(list(data.values())[0], (Series, 
dict)):
-> 1584                     data = _from_nested_dict(data)
1585                 else:
1586                     data, index = list(data.values()), 
list(data.keys())

in _from_nested_dict(data)
10760     new_data: collections.defaultdict = 
collections.defaultdict(dict)
10761     for index, s in data.items():
-> 10762         for col, v in s.items():
10763             new_data[col][index] = v
10764     return new_data

AttributeError: 'NoneType' object has no attribute 'items'

Now it shows:

|song_id|features                                |
|:------|:--------------------------------------:|
|link   |{'valence:0.23', 'danceability:0.21',...|

How can it be like that?

|song_id|valence|danceability|
|link   |0.23   |0.21        |

Can you help me please?

GRG 27
  • 23
  • 3

0 Answers0