首页 > 后端开发 > Python教程 > 如何从具有分层数据的嵌套字典高效创建 Pandas DataFrame?

如何从具有分层数据的嵌套字典高效创建 Pandas DataFrame?

Linda Hamilton
发布: 2024-12-14 10:58:12
原创
541 人浏览过

How Can I Efficiently Create a Pandas DataFrame from a Nested Dictionary with Hierarchical Data?

从嵌套字典项构造 Pandas DataFrames

给定一个嵌套字典,其结构以 UserId 作为顶层,Categories 作为第二层level,以及各种属性作为第三层,目标是创建一个具有分层索引的pandas DataFrame。每个 UserID 应显示为索引值,而类别和属性值则形成列名称。

从此类字典构造 DataFrame 的传统尝试可能会导致索引和列分配不正确。要解决此问题,请考虑以下方法:

1.重塑字典:

一种解决方案是将字典重塑为一种格式,其中键是表示所需 MultiIndex 的元组。这允许将 pd.DataFrame.from_dict 与 orient='index':

user_dict = {
    12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'},
         'Category 2': {'att_1': 23, 'att_2': 'another'}},
    15: {'Category 1': {'att_1': 10, 'att_2': 'foo'},
         'Category 2': {'att_1': 30, 'att_2': 'bar'}}
}

df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] 
                           for i in user_dict.keys() 
                           for j in user_dict[i].keys()},
                       orient='index')
登录后复制

2 一起使用。连接数据帧:

或者,可以通过为每个类别和用户构建单独的数据帧,然后连接它们来构建数据帧:

user_ids = []
frames = []

for user_id, d in user_dict.iteritems():
    user_ids.append(user_id)
    frames.append(pd.DataFrame.from_dict(d, orient='index'))

df = pd.concat(frames, keys=user_ids)
登录后复制

两种方法都会生成具有所需数据的数据帧分层索引和列结构:

               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar
登录后复制

以上是如何从具有分层数据的嵌套字典高效创建 Pandas DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板