You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas.json_normalize处理Spotify API返回的嵌套JSON艺术家列表,实现单条曲目记录对应多个艺术家名称?

解决Spotify API数据提取:合并艺术家名称到Pandas列中

我来帮你搞定这个问题!你想要把Spotify API返回的每首曲目对应的所有艺术家名称合并成逗号分隔的字符串,放到Pandas的Artists列里,之前用json_normalize要么没提取到正确内容,要么把每个艺术家拆成了单独行,对吧?下面是两种简单有效的解决方案:

方法一:先标准化数据,再处理嵌套列

首先用json_normalize把原始的曲目数据转换成基础DataFrame,然后针对artists列(此时是字典列表格式)做自定义处理,提取每个艺术家的name并合并:

import pandas as pd

# 假设你已经获取到RespJson2['items']的曲目数据
df = pd.json_normalize(RespJson2['items'])

# 处理artists列:遍历每个艺术家字典,提取name并用逗号连接
df['Artists'] = df['artists'].apply(lambda x: ','.join([artist['name'] for artist in x]))

# 如果你不需要原始的artists列,可以删除它
df = df.drop('artists', axis=1)

# 查看你需要的Artists列结果
print(df[['Artists']])

方法二:先预处理数据,再转成DataFrame

如果不想保留曲目的其他字段,只需要艺术家名称,可以先遍历原始的曲目列表,提前合并好艺术家名称,再转成DataFrame:

import pandas as pd

# 预处理每一条曲目数据,生成包含合并后艺术家名称的字典
processed_tracks = []
for track in RespJson2['items']:
    # 提取当前曲目的所有艺术家名称并合并
    artist_names = ','.join([artist['name'] for artist in track['artists']])
    processed_tracks.append({'Artists': artist_names})

# 转成DataFrame
df = pd.DataFrame(processed_tracks)
print(df)

为什么之前的方法没达到预期?

  • 直接用pd.json_normalize(RespJson2['items'])时,artists列会被保留为字典列表的格式,不会自动提取合并名称;
  • 使用record_path=["artists"]参数时,json_normalize会把每个艺术家拆分成单独的行,这就导致同一首曲目被拆成了多条记录,不符合你的需求。

内容的提问来源于stack exchange,提问作者Pola George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:07:34