首页 > 后端开发 > Python教程 > 如何从具有分层索引的嵌套字典有效构建 Pandas DataFrame?

如何从具有分层索引的嵌套字典有效构建 Pandas DataFrame?

DDD
发布: 2024-12-01 09:27:11
原创
786 人浏览过

How to Efficiently Construct a Pandas DataFrame from a Nested Dictionary with a Hierarchical Index?

从嵌套字典构建 Pandas DataFrame

使用嵌套字典时,将数据转换为 pandas DataFrame 可能具有挑战性一种与所需结构保持一致的方式。特别是,从字典最深层提取数据作为系列可能会很麻烦。

假设您有一个结构如下的字典:

  • 级别 1:UserId(长整型)
  • 第 2 级:类别(字符串)
  • 第 3 级:什锦属性(浮点型、整数型等)

目标是使用字典第三层的数据构建具有分层索引的 DataFrame。

使用a MultiIndex

pandas MultiIndex 是在 DataFrame 中表示分层数据的便捷方法。要从嵌套字典创建 MultiIndex,请将键重塑为与多索引值对应的元组。

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')
登录后复制

此方法将创建一个具有分层索引的 DataFrame,其中第一级包含 UserIds 和第二级包含类别。第三层的数据现在被组织成系列,可以使用 UserId 和 Category 作为索引进行访问。

使用串联的替代方法

构造 DataFrame 的另一种方法是通过连接组件数据帧。

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)
登录后复制

此方法迭代字典,创建一个 DataFrame对于每个 user_id 和类别组合。然后将生成的数据帧垂直连接并使用键作为分层索引进行连接。

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

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