从嵌套字典中的项目构造 pandas DataFrame

2023-11-26

假设我有一个嵌套字典“user_dict”,其结构:

  • Level 1:用户 ID(长整型)
  • Level 2:类别(字符串)
  • Level 3:各种属性(浮点数、整数等..)

例如,该字典的条目为:

user_dict[12] = {
    "Category 1": {"att_1": 1, 
                   "att_2": "whatever"},
    "Category 2": {"att_1": 23, 
                   "att_2": "another"}}

中的每个项目user_dict具有相同的结构并且user_dict包含大量我想要提供给 pandas DataFrame 的项目,从属性构建系列。在这种情况下,分层索引将很有用。

具体来说,我的问题是是否存在一种方法可以帮助 DataFrame 构造函数理解该系列应该根据字典中“level 3”的值构建?

如果我尝试类似的事情:

df = pandas.DataFrame(users_summary)

“级别 1”中的项目(UserId)被视为列,这与我想要实现的目标相反(将 UserId 作为索引)。

我知道我可以在迭代字典条目后构建该系列,但如果有更直接的方法,这将非常有用。一个类似的问题是询问是否可以从文件中列出的 json 对象构造 pandas DataFrame。


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

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


               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar

另一种方法是通过连接组件数据帧来构建数据帧:

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)

               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从嵌套字典中的项目构造 pandas DataFrame 的相关文章

  • 是否可以在 IPython 控制台中显示 pandas 样式?

    是否可以显示熊猫风格 https pandas pydata org pandas docs stable user guide style html在 iPython 控制台中 Jupyter 笔记本中的以下代码 import panda
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 为什么我会收到 ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

    以下代码给出了值错误 major males for row in recent grads if recent grads Men gt recent grads Women major males append recent grads
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • Asyncio:从未检索到任务异常的怪异

    假设我有一个简单的代码 import asyncio async def exc print 1 0 loop asyncio get event loop loop create task exc try loop run forever
  • Python 中“is”运算符的语义是什么?

    如何is运算符确定两个对象是否相同 它是如何工作的 我找不到它的记录 来自文档 http docs python org reference datamodel html 每个对象都有一个身份 一个类型 和一个值 对象的身份 一旦发生就永远
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • Python FTP下载550错误

    我编写了一个 ftp 爬虫来下载特定文件 它会一直工作 直到找到要下载的特定文件 然后抛出此错误 ftplib error perm 550 该文件存在于我的下载文件夹中 但文件大小为 0 kb 我需要转换某些内容才能下载吗 我可以访问 f
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • 增强迪基-富勒测试中的 BIC 在 Python 中到底是如何工作的?

    这个问题是关于 statsmodels tsa stattools python 库 adfuller 中的增强迪基 富勒测试实现 原则上 AIC 和 BIC 应该计算一组可用模型的信息标准 并选择最好的模型 信息损失最低的模型 但它们在增
  • 将 str.contains 映射到 pandas DataFrame

    python 初学者 我正在寻找创建字符串的字典映射以及关联的值 我有一个数据框 想要创建一个新列 如果字符串匹配 则会将该列标记为 x df pd DataFrame comp dell notebook dell notebook S3
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras

随机推荐

  • Android Https Web 服务通信 (SSL / TLS 1.2)

    在我的 Android 应用程序中 我必须与 https Web 服务进行通信并读取响应 我已经通知服务器配置了SSL with TLS 1 2 我使用以下示例代码来连接服务 https get 请求 但仅限运行的设备安卓5 0或以上可以成
  • 在Python中播放和控制mp3文件?

    首先 我是一名 Python 初学者 具有典型的面向对象知识的 C Java 背景 我确信要尝试使用 Python 来完成我当前正在做的工作 到目前为止我很喜欢它 我遇到的一个问题是找到一个好的 mp3 模块 我尝试过 TkSnack 它安
  • 如何以编程方式更新 UIView 的恒定高度约束?

    我有一个UIView我使用 Xcode Interface Builder 设置约束 现在我需要更新UIView以编程方式保持实例的高度常量 有一个函数就像myUIView updateConstraints 但我不知道如何使用它 从界面构
  • Symfony 注销处理程序

    我只是尝试了几个小时来弄清楚如何在注销操作后使闪存消息正常工作 安全 yml login pattern login security false secured area pattern form login check path che
  • 无法监听UIAxes的YLim属性

    MATLAB 提供了addlistener功能 监听器使我们能够跟踪对象属性的变化并对其采取行动 例如 我们可以创建一个非常简单的侦听器 当 YLim 的财产axes对象被改变 Example using axes ax axes addl
  • 句子间距[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 呈现句子之间应有的额外间距的最佳方式是什么 使用 X HTML CSS p Lorem ipsum Dolor sit amet p wider than word spacing 由于
  • 在循环(或推导式)中创建函数(或 lambda)

    我正在尝试在循环内创建函数 functions for i in range 3 def f return i alternatively f lambda i functions append f 问题是所有功能最终都是相同的 所有三个函
  • 使用现有私钥和 RS256 算法生成 JWT

    我有以下 RSA 私钥 并且我必须生成 JWT 令牌使用RS256算法 这是我的样本私钥 BEGIN RSA PRIVATE KEY MIIEoAIBAAKCAQEAnFWdIwBbLRw4xfFDXYFmlXKB4BpKeuAtfh1dc
  • Java 中的嵌套函数

    Java 编程语言是否有任何扩展可以创建嵌套函数 在很多情况下 我需要创建仅在另一个方法或 for 循环的上下文中使用一次的方法 到目前为止 我还无法在 Java 中完成此任务 尽管可以在 JavaScript 中轻松完成 例如 这不能在标
  • 如何使用 Popen 在一个进程中运行多个命令?

    我想打开一个进程并在同一进程中运行两个命令 我有 cmd1 source usr local cmd2 ls l final Popen cmd2 shell True stdin PIPE stdout PIPE stderr STDOU
  • 如何全局设置 Jackson 以忽略 Spring 中的未知属性?

    Jackson 使用以下注释来忽略类中的未知属性 JsonIgnoreProperties ignoreUnknown true 它允许您使用此注释忽略特定属性 JsonIgnore 如果您想全局设置它 您可以修改对象映射器 jackson
  • 使用 Commons CSV 解析 CSV - 引号内的引号导致 IOException

    我在用共享 CSV解析与电视节目相关的 CSV 内容 其中一个节目的节目名称包含双引号 116 6 2 29 九月 10 JJ 60 分钟 http www tvmaze com episodes 4855 criminal minds 6
  • jQuery 根据类重新排序列表项

    有没有一种简单的方法可以使用类重新排序我的列表项 我想指定一个类来首先显示列表顶部的这些项目 然后列出下面的其他列表项目 ul class order me li class normal content li li class norma
  • 批处理命令捕获所有可能的 ping 问题

    我有一个关于验证 ping 是否在批处理命令中正确返回的问题 目前 我必须通过 3 种不同的方式检查 ping 才能知道服务器实际上已启动 我想将这些组合成一个 ping 命令 我尝试过使用不同的错误级别或不使用错误级别 0 等 它们都没有
  • 连续的 CSS 过渡

    有没有办法连续动画背景图像background position使用 CSS3 转换的属性 是的 有可能 DEMO div background url http lorempixel com 100 100 height 100px wi
  • mvc3 https 和 http

    我正在将 ASP NET 应用程序转换为 MVC3 假设我有一个需要 https 的登录页面 而其他每个页面只需要 http 如何将登录重定向到 https 并将所有其他页面保留在 http 上 任何建议都会很棒 The RequireHt
  • C++11 将工厂声明为基类的友元

    我正在尝试为派生类创建一个工厂 我只希望工厂能够创建派生类的实例 因此我创建了基本构造函数protected 派生类仅使用基类构造函数 因此它们的构造函数是protected also 我试图将工厂声明为基类的友元 以便它可以访问prote
  • CSS3 悬停/点击在移动浏览器中不起作用

    我创建了一个盒子 当鼠标悬停在另一个 div 上时 它会淡出到另一个 div 中 这一切都是使用 CSS3 完成的 然而 我意识到一个问题是悬停在移动浏览器中不起作用 有没有办法以某种方式使其适用于移动设备 或者我是否必须诉诸使用某种 JS
  • 从 Hibernate 映射获取列长度?

    为了验证我收到的数据 我需要确保长度不会超过数据库列的长度 现在所有的长度信息都存储在 Hibernate 映射文件中 是否有办法以编程方式访问这些信息 你可以做到 但这并不容易 您可能希望在启动时执行如下操作并存储值的静态缓存 有很多特殊
  • 从嵌套字典中的项目构造 pandas DataFrame

    假设我有一个嵌套字典 user dict 其结构 Level 1 用户 ID 长整型 Level 2 类别 字符串 Level 3 各种属性 浮点数 整数等 例如 该字典的条目为 user dict 12 Category 1 att 1