pd.concat是将这两个数据帧组合成一个循环的正确函数吗?

我正在尝试通过Spotipy库访问Spotify的API。我正在使用循环为我听过的最后50首歌曲的曲目和音频功能建立数据帧。

我想可能有更有效的方法可以做到这一点,但是到目前为止,我已经有了一个循环,可以将数据添加到名为pddf的现有数据帧中。

我希望通过逐行添加列来完成此操作,因为添加的数据将取决于该行中的轨道uri。

for index,row in pddf.iterrows():
    track = list(row['track.uri'])
    track = re.findall('(?<=track:).*$',row['track.uri'])
    features = sp.audio_features(tracks=track)
    audio_features = pd.DataFrame(features)
    now = datetime.datetime.now()
    date = '%d/%d/%d' % (now.month,now.day,now.year)
    audio_features['Date'] = date
    audio_features = audio_features[
        ['Date','acousticness','analysis_url','danceability','duration_ms','energy','id','instrumentalness','key','liveness','loudness','mode','speechiness','tempo','time_signature','track_href','type','uri','valence']]
    pddf = pd.concat([pddf,audio_features],axis=0)

我有一种感觉pd.concat是问题还是效率低下,但是它返回以下信息:

0   2020-03-19T02:31:16.952Z    https://open.spotify.com/album/7z4GhRfLqfSkqrj5F3Yt2B   https://api.spotify.com/v1/albums/7z4GhRfLqfSkqrj5F3Yt2B    album   spotify:album:7z4GhRfLqfSkqrj5F3Yt2B    album   [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4Gso3d4CscCijv0lmajZWs'},'href': 'https://api.spotify.com/v1/artists/4Gso3d4CscCijv0lmajZWs','id': '4Gso3d4CscCijv0lmajZWs','name': 'Don Toliver','type': 'artist','uri': 'spotify:artist:4Gso3d4CscCijv0lmajZWs'}]    ['AD','AE','AR','AT','AU','BE','BG','BH','BO','BR','CA','CH','CL','CO','CR','CY','CZ','DE','DK','DO','DZ','EC','EE','EG','ES','FI','FR','GB','GR','GT','HK','HN','HU','ID','IE','IL','IS','IT','JO','JP','KW','LB','LI','LT','LU','LV','MA','MC','MT','MX','MY','NI','NL','NO','NZ','OM','PA','PE','PH','PL','PS','PT','PY','QA','RO','SA','SE','SG','SK','SV','TH','TN','TR','TW','US','UY','VN','ZA']    https://open.spotify.com/album/7z4GhRfLqfSkqrj5F3Yt2B   https://api.spotify.com/v1/albums/7z4GhRfLqfSkqrj5F3Yt2B    7z4GhRfLqfSkqrj5F3Yt2B  [{'height': 640,'url': 'https://i.scdn.co/image/ab67616d0000b273da7dc7bd8beaa9bc9ceb8297','width': 640},{'height': 300,'url': 'https://i.scdn.co/image/ab67616d00001e02da7dc7bd8beaa9bc9ceb8297','width': 300},{'height': 64,'url': 'https://i.scdn.co/image/ab67616d00004851da7dc7bd8beaa9bc9ceb8297','width': 64}]    Heaven Or Hell  3/13/20 day 12  album   spotify:album:7z4GhRfLqfSkqrj5F3Yt2B    [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4Gso3d4CscCijv0lmajZWs'},'ZA']    1   180674  FALSE   USAT21904066    https://open.spotify.com/track/47IXLhp3c6mu7NqvpuhuLi   https://api.spotify.com/v1/tracks/47IXLhp3c6mu7NqvpuhuLi    47IXLhp3c6mu7NqvpuhuLi  FALSE   Can't Feel My Legs  67  https://p.scdn.co/mp3-preview/64421f93c1a50553650656789726942083f5c567?cid=a98a5116ec7149be9fbec4e5ff8afc18 6   track   spotify:track:47IXLhp3c6mu7NqvpuhuLi                                                                            
1   2020-03-19T02:28:17.087Z    https://open.spotify.com/album/7z4GhRfLqfSkqrj5F3Yt2B   https://api.spotify.com/v1/albums/7z4GhRfLqfSkqrj5F3Yt2B    album   spotify:album:7z4GhRfLqfSkqrj5F3Yt2B    album   [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4Gso3d4CscCijv0lmajZWs'},'ZA']    1   171210  TRUE    USAT22001224    https://open.spotify.com/track/79EVtighsMYkWahVb9MnF8   https://api.spotify.com/v1/tracks/79EVtighsMYkWahVb9MnF8    79EVtighsMYkWahVb9MnF8  FALSE   Wasted  68  https://p.scdn.co/mp3-preview/2d75b6c8a2699b911fbcaff1d2625bb6df4d183b?cid=a98a5116ec7149be9fbec4e5ff8afc18 5   track   spotify:track:79EVtighsMYkWahVb9MnF8                                                                            
2   2020-03-19T02:25:25.899Z    https://open.spotify.com/album/7z4GhRfLqfSkqrj5F3Yt2B   https://api.spotify.com/v1/albums/7z4GhRfLqfSkqrj5F3Yt2B    album   spotify:album:7z4GhRfLqfSkqrj5F3Yt2B    album   [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4Gso3d4CscCijv0lmajZWs'},'ZA']    1   167915  TRUE    USAT22001223    https://open.spotify.com/track/527k23H0A4Q0UJN3vGs0Da   https://api.spotify.com/v1/tracks/527k23H0A4Q0UJN3vGs0Da    527k23H0A4Q0UJN3vGs0Da  FALSE   After Party 71  https://p.scdn.co/mp3-preview/647283c4f566948abd74087459fe592b5fd39dac?cid=a98a5116ec7149be9fbec4e5ff8afc18 4   track   spotify:track:527k23H0A4Q0UJN3vGs0Da                                                                            
3   2020-03-19T02:18:06.030Z    https://open.spotify.com/album/7z4GhRfLqfSkqrj5F3Yt2B   https://api.spotify.com/v1/albums/7z4GhRfLqfSkqrj5F3Yt2B    album   spotify:album:7z4GhRfLqfSkqrj5F3Yt2B    album   [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4Gso3d4CscCijv0lmajZWs'},'uri': 'spotify:artist:4Gso3d4CscCijv0lmajZWs'},{'external_urls': {'spotify': 'https://open.spotify.com/artist/3xWSt0mL474uQlh5Zm6NsW'},'href': 'https://api.spotify.com/v1/artists/3xWSt0mL474uQlh5Zm6NsW','id': '3xWSt0mL474uQlh5Zm6NsW','name': 'Offset','uri': 'spotify:artist:3xWSt0mL474uQlh5Zm6NsW'},{'external_urls': {'spotify': 'https://open.spotify.com/artist/0VRj0yCOv2FXJNP47XQnx5'},'href': 'https://api.spotify.com/v1/artists/0VRj0yCOv2FXJNP47XQnx5','id': '0VRj0yCOv2FXJNP47XQnx5','name': 'Quavo','uri': 'spotify:artist:0VRj0yCOv2FXJNP47XQnx5'}]   ['AD','ZA']    1   157133  TRUE    USAT21907692    https://open.spotify.com/track/6SPgp2qK3fb4wPX1SldrNf   https://api.spotify.com/v1/tracks/6SPgp2qK3fb4wPX1SldrNf    6SPgp2qK3fb4wPX1SldrNf  FALSE   Had Enough (feat. Quavo & Offset)   64  https://p.scdn.co/mp3-preview/8ef4943beb019f23b02252aab0b36c313ff31415?cid=a98a5116ec7149be9fbec4e5ff8afc18 9   track   spotify:track:6SPgp2qK3fb4wPX1SldrNf                                                                            
4   2020-03-18T22:16:21.225Z    https://open.spotify.com/album/7z4GhRfLqfSkqrj5F3Yt2B   https://api.spotify.com/v1/albums/7z4GhRfLqfSkqrj5F3Yt2B    album   spotify:album:7z4GhRfLqfSkqrj5F3Yt2B    album   [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4Gso3d4CscCijv0lmajZWs'},'ZA']    1   180674  FALSE   USAT21904066    https://open.spotify.com/track/47IXLhp3c6mu7NqvpuhuLi   https://api.spotify.com/v1/tracks/47IXLhp3c6mu7NqvpuhuLi    47IXLhp3c6mu7NqvpuhuLi  FALSE   Can't Feel My Legs  67  https://p.scdn.co/mp3-preview/64421f93c1a50553650656789726942083f5c567?cid=a98a5116ec7149be9fbec4e5ff8afc18 6   track   spotify:track:47IXLhp3c6mu7NqvpuhuLi                                                                            
0                                                                                                                                           3/19/20 0.237   https://api.spotify.com/v1/audio-analysis/47IXLhp3c6mu7NqvpuhuLi    0.703   180675  0.655   47IXLhp3c6mu7NqvpuhuLi  0   11  0.199   -6.226  0   0.0782  140.047 4   https://api.spotify.com/v1/tracks/47IXLhp3c6mu7NqvpuhuLi    audio_features  spotify:track:47IXLhp3c6mu7NqvpuhuLi    0.414
0                                                                                                                                           3/19/20 0.0714  https://api.spotify.com/v1/audio-analysis/79EVtighsMYkWahVb9MnF8    0.743   171210  0.753   79EVtighsMYkWahVb9MnF8  3.02E-06    1   0.088   -4.479  1   0.0424  157.047 4   https://api.spotify.com/v1/tracks/79EVtighsMYkWahVb9MnF8    audio_features  spotify:track:79EVtighsMYkWahVb9MnF8    0.695
0                                                                                                                                           3/19/20 0.00981 https://api.spotify.com/v1/audio-analysis/527k23H0A4Q0UJN3vGs0Da    0.629   167916  0.692   527k23H0A4Q0UJN3vGs0Da  0.328   5   0.603   -8.045  1   0.0376  162.948 4   https://api.spotify.com/v1/tracks/527k23H0A4Q0UJN3vGs0Da    audio_features  spotify:track:527k23H0A4Q0UJN3vGs0Da    0.453
0                                                                                                                                           3/19/20 0.262   https://api.spotify.com/v1/audio-analysis/6SPgp2qK3fb4wPX1SldrNf    0.748   157133  0.789   6SPgp2qK3fb4wPX1SldrNf  0   2   0.13    -4.579  1   0.103   147.957 4   https://api.spotify.com/v1/tracks/6SPgp2qK3fb4wPX1SldrNf    audio_features  spotify:track:6SPgp2qK3fb4wPX1SldrNf    0.671
0                                                                                                                                           3/19/20 0.237   https://api.spotify.com/v1/audio-analysis/47IXLhp3c6mu7NqvpuhuLi    0.703   180675  0.655   47IXLhp3c6mu7NqvpuhuLi  0   11  0.199   -6.226  0   0.0782  140.047 4   https://api.spotify.com/v1/tracks/47IXLhp3c6mu7NqvpuhuLi    audio_features  spotify:track:47IXLhp3c6mu7NqvpuhuLi    0.414

添加的数据从数据集的末尾的行开始,而不是附加到每行...

如果任何人都可以指出我出了问题的地方,那我会很沮丧D:

zhaofc 回答:pd.concat是将这两个数据帧组合成一个循环的正确函数吗?

仅是警告,我在假设pddf ['track.uri']和audio_features ['uri']是两个数据帧之间的公共列的前提下编写此代码。如果我对数据的结构有误解,则可能需要调整示例中使用的特定名称。

好的,所以您可能遇到的第一个问题与pd.concat()的关系较小,而与您解决此问题的方式的关系更大。如果可以,请尝试一次生成包含音频功能的DataFrame,而不是在每个循环中都生成DataFrame。首先,获取您需要使用的所有轨道uri的列表。然后,您可以使用循环创建列表列表(甚至更好的是,元组列表)。 然后,您可以将其转换为DataFrame。

要实际上将其转换为DataFrame,通常最好使用merge将它们加入到公共键(例如track uri)中。在这种情况下:

pddf = pddf.merge(audio_features,left_on='track.uri',right_on='uri')
本文链接:https://www.f2er.com/2609254.html

大家都在问