将嵌套字典解析为数据帧

2024-09-27 04:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从JSON文件创建数据帧。 enter image description here

每个album_details都有一个这样的嵌套dict

    {'api_path': '/albums/491200',
 'artist': {'api_path': '/artists/1421',
  'header_image_url': 'https://images.genius.com/f3a1149475f2406582e3531041680a3c.1000x800x1.jpg',
  'id': 1421,
  'image_url': 'https://images.genius.com/25d8a9c93ab97e9e6d5d1d9d36e64a53.1000x1000x1.jpg',
  'iq': 46112,
  'is_meme_verified': True,
  'is_verified': True,
  'name': 'Kendrick Lamar',
  'url': 'https://genius.com/artists/Kendrick-lamar'},
 'cover_art_url': 'https://images.genius.com/1efc5de2af228d2e49d91bd0dac4dc49.1000x1000x1.jpg',
 'full_title': 'good kid, m.A.A.d city (Deluxe Version) by Kendrick Lamar',
 'id': 491200,
 'name': 'good kid, m.A.A.d city (Deluxe Version)',
 'url': 'https://genius.com/albums/Kendrick-lamar/Good-kid-m-a-a-d-city-deluxe-version'}

我想在数据框中创建另一列,只使用上面的相册名称dict

'name': 'good kid, m.A.A.d city (Deluxe Version)',

我一直在寻找如何做到这一点,从很长的时间,可以有人请帮助我。谢谢


Tags: 数据namehttpscomurlcityversiondict
3条回答

这就是使用str调用dict键的情况

df['name'] = df['album_details'].str['name']

您可以将应用与lambda函数一起使用:

df['album_name'] = df['album_details'].apply(lambda d: d['name'])

基本上,为“album_details”列的每个值执行lambda函数。请注意,函数中的参数“d”是相册字典。Apply返回一系列函数返回值,您可以将其设置为新列

见:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

如果数据帧存储在df变量中,则可以执行以下操作:

df['artist_name'] = [x['artist']['name'] for x in df['album_details'].values]

相关问题 更多 >

    热门问题