【问题标题】:Nested Nested column in Pandas DataframePandas Dataframe 中的嵌套嵌套列
【发布时间】:2018-11-01 04:42:32
【问题描述】:

在熊猫数据框中有一个嵌套的嵌套列,我在 json_normalize 请求后收到,如下所示:

  {  
   'Speed':352,
   'type':[  
      {  
         'details':'change\n',
         'id':'3129f48c-23a6-49bd-9854',
         'machine':'logs',
         'Cause':{  
            'code':'051',
            'description':'Error',
            'id':'41827d41-75c5-4c88-9ec3',
            'reason':'Error'
         }
      }
   ],
   'endTime':1522844263021,
   'line':'73c2f337-46fc-415c-a24f',
   'level':1,
   'lineId':'9b6a5624-4add-4fce-9de3',
   'loss':0,
   'startTime':1522842642200
}

如何分列?我尝试使用 lambda 方法,但它给了我错误'list index out of range',而且我不知道如何处理第二个嵌套:

df['details'] = df.loc[:, 'type'].apply(lambda x: x[0]['details'])

如何解决这个任务?

【问题讨论】:

  • 试试df['details'] = df.loc[:, 'type'].apply(lambda x: x['details'])
  • 列表索引必须是整数或切片,而不是 str
  • 对.. 我的数据框一定与您的不同。如果您使用df.head() 编辑您的问题以包含您的数据框外观的快照,这将很有帮助

标签: python json pandas lambda nested


【解决方案1】:

如果我正确理解了您的问题,您正在使用多索引作为数据框的列。虽然我不明白你想用它做什么。

如果您想访问子列“详细信息”,请尝试以下操作:

df['type']['details']

我无法保证它会起作用,因为我无法使用您提供的数据重新创建数据框

也许这会有所帮助

https://pandas.pydata.org/pandas-docs/stable/advanced.html

【讨论】:

    【解决方案2】:

    json_normalize() 的选项帮助我解决了这种情况:

    df_df = json_normalize(df['values'], record_path=['type'], meta=['Speed','endTime', 'level','lineId', 'loss', 'startTime'])
    

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 2017-12-26
      • 2022-01-01
      • 1970-01-01
      • 2019-06-27
      • 2016-12-01
      • 1970-01-01
      • 2019-05-05
      • 2022-01-02
      相关资源
      最近更新 更多