【问题标题】:Parsing nested dictionary to dataframe将嵌套字典解析为数据框
【发布时间】:2021-08-13 19:18:26
【问题描述】:

我正在尝试从 JSON 文件创建数据框。

每个album_details 都有一个这样的嵌套字典

    {'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)',

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

【问题讨论】:

    标签: python json pandas dataframe dictionary


    【解决方案1】:

    是这样用str调用dict

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

    【讨论】:

      【解决方案2】:

      如果您将数据框存储在 df 变量中,您可以这样做:

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

      【讨论】:

        【解决方案3】:

        您可以将 apply 与 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-10
          • 1970-01-01
          • 2021-11-28
          • 2022-01-07
          • 1970-01-01
          相关资源
          最近更新 更多