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

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

Susan Sarandon
Susan Sarandon原创
2024-12-02 18:52:12261浏览

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

从具有层次索引的嵌套字典构造 pandas DataFrame

本文解决了将嵌套字典转换为 pandas DataFrame 的需要分层索引。字典的结构以 UserIds 作为第一级,Categories 作为第二级,各种属性作为第三级,这对创建所需的 DataFrame 结构提出了挑战。

构造具有预期分层索引的 DataFrame ,第一个解决方案涉及重塑嵌套字典。字典中的每个键应该是与多索引的值对应的元组。使用 pd.DataFrame.from_dict 并设置 orient='index',可以创建 DataFrame:

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'}}}

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。此方法为每个 UserId 附加 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'))

pd.concat(frames, keys=user_ids)

通过实现其中一种方法,可以从嵌套字典构造具有分层索引的 pandas DataFrame,从而简化数据的组织和分析.

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn