使用类似字典的结构访问Pandas数据框中的嵌套元素

时间:2015-08-11 04:01:23

标签: pandas

我有一个数据框如下

In [19]: data_frame
Out[19]: 
                    _id                                              hero
0  55c97138e5fecec26959f3b0  {u'info': {u'id': u'0001', u'name': u'superman'}}

为了提交条目的名称,我执行以下列表理解。有这么简单的方法吗?因为此方法不会针对更多嵌套属性进行缩放

In [27]: [y['name'] for y in [x['info'] for x in data_frame['hero']]]
Out[27]: [u'superman']

非常感谢任何见解。 谢谢。

2 个答案:

答案 0 :(得分:3)

您可以将对象解包到DataFrame中,如下所示:

df[(['_id', 'name'])] = df.hero.apply(
    lambda x: pd.Series(x['info'].values(), index=x['info'].keys())
    )

   id                            name   _id  hero
0  55c97138e5fecec26959f3b0  superman  0001  {u'info': {u'id': u'0001', u'name': u'superman'}} 

然后访问像列这样的元素。

答案 1 :(得分:2)

如果没有更实际的数据,很难判断,但也许这样可行:

>>> df.hero.apply(lambda x: x.get('info').get('name'))
0    superman
Name: hero, dtype: object