从具有层次索引的嵌套字典构造 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中文网其他相关文章!