来自嵌套字典的 Pandas 数据框

2023-11-27

我的字典看起来像这样:

{'x': {'b': 10, 'c': 20}, 'y': {'b': '33', 'c': 44}}

我想获得一个如下所示的数据框:

index   col1    col2    val
0        x       b      10
1        x       c      20
2        y       b      33
3        y       c      44

我尝试调用 pandas.from_dict(),但它没有给我想要的结果。 那么,实现这一目标的最优雅、最实用的方法是什么?

编辑:实际上,我的字典深度为 4,所以我希望看到一种针对这种情况的解决方案,或者理想情况下,一种可以在一般设置中适用于任意深度的解决方案。

这是一个更深层次字典的例子:{'x':{'a':{'m':1, 'n':2}, 'b':{'m':10, 'n':20}}, 'y':{'a':{'m':100, 'n':200}, 'b':{'m':111, 'n':222}} }适当的数据框应有 8 行。

回答:

df = pd.DataFrame([(k1, k2, k3, k4, k5, v) for k1, k2345v in dict.items()
                           for k2, k345v in k2345v.items()
                           for k3, k45v in k345v.items()
                           for k4, k5v in k45v.items()
                           for k5, v in k5v.items()])

对于任何深度,您可以使用pd.json_normalize and melt。下面是一个稍微修改过的 2/3/4 深度字典的示例

data = {'one': 1, 'two': {'a': 2}, 'four': {'a': {'b': {'c': 2}}},
        'x': {'a': {'m': 1, 'n': 2}, 'b': {'m': 10, 'n': 20}},
        'y': {'a': {'m': 100, 'n': 200}, 'b': {'m': 111, 'n': 222}}}
df_melt = pd.json_normalize(data, sep='>>').melt()
df_final = df_melt['variable'].str.split('>>', expand=True)
df_final.columns = [f'col{name}' for name in df_final.columns]
df_final[['value']] = df_melt['value']
    col0  col1  col2  col3  value
0    one  None  None  None      1
1    two     a  None  None      2
2   four     a     b     c      2
3      x     a     m  None      1
4      x     a     n  None      2
5      x     b     m  None     10
6      x     b     n  None     20
7      y     a     m  None    100
8      y     a     n  None    200
9      y     b     m  None    111
10     y     b     n  None    222

json_normalize真的很有用,还有一些额外的例子Medium

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

来自嵌套字典的 Pandas 数据框 的相关文章

随机推荐

  • DropDownList 不会在 SelectedIndexChanged 上回发

    我正在编写一个 ASP Net Web 表单 其中包含一些 DropDownList 控件 然后用户更改下拉列表之一中的选定项目 ASP Net 似乎不会处理 SelectedIndexChanged 事件 直到通过单击 提交 按钮提交表单
  • 有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?

    有没有一种简单的方法可以让 Git 始终对创建的每个提交或标签进行签名 我尝试过类似的东西 alias commit commit S 但这并没有达到目的 我不想安装不同的程序来实现这一点 可以轻松实现吗 只是一个附带问题 也许提交不应该被
  • 如何从Python 2.7中以空格分隔的字符串中提取整数?

    我想从字符串中提取整数 其中整数由空格分隔 即 我怎么能这么做 Input I 1 15 163 132 Result 1 15 163 132 所以我写了一个像这样的函数 def getIt aStr collect i 0 while
  • Spring Hibernate Template 执行方法为 Oracle 上的计数查询返回什么对象类型?

    当针对 Oracle 数据库运行时 以下对象的运行时类型是什么春季休眠模板 Spring 2 5 和 Hibernate 3 3 2GA 代码返回其中 SQL 查询是一个计数查询 例如select count from table Stri
  • SQL 中的常量和包含文件

    是否可以在 TSQL 存储过程中包含一组 常量 值 我遇到一种情况 我使用整数字段来存储位值 并且我有一小组 常量 值 用于针对该字段插入 选择 DECLARE CostsCalculated int 32 DECLARE Aggregat
  • 使用 Mysql 检索最后插入的 id

    再会 我愿意检索 Mysql 中新插入的行的 id 值 我知道有 mysqli insert id 函数 但是 我无法指定表格 如果同时进行查询 可能会存在检索到错误 id 的风险 我正在使用 Node js MySQL 我不想冒险查询最高
  • 从 applicationContext.xml 读取环境变量

    我需要读取 web xml 中定义的环境变量
  • 静态方法中的局部变量也是静态的吗?

    我想知道如果我们在静态方法中声明它们 所有局部变量都会变成静态吗 例如 public static void A int x 3 2 changeX x for int i 0 i lt x length i System out prin
  • 如何在 Sympy 中进行函数组合?

    我想做类似的事情h f g x 并能够对 h 进行微分 例如h diff x 仅针对一个功能 例如h cos x 这实际上是可能的 并且文档说得很清楚 但对于函数组合则不太清楚 如果您已经这样做了 请向我展示一个示例或将我链接到相关文档 如
  • Guice 在 UI 线程之外创建 Swing 组件有问题吗?

    我正在使用 Google Guice 作为 IOC 容器开发 Java Swing 应用程序 一切进展顺利 存在一些用户界面问题 当标准 L F 替换为推送像素时 由于 Guice 的 Swing 组件在 UI 线程之外创建 因此 Subs
  • 何时使用socket.io以及何时使用ajax

    我一直在nodejs 中编程 研究了如何使用socket io 和ajax 调用节点服务器 socket io 是为了取代 ajax 而设计的吗 我很想知道在哪些情况下使用 socket io 比较好 哪些 ajax 更好 感谢您的意见 嗯
  • 没有可用的事务性 EntityManager

    我是 jpa 和 spring 世界的新手 目前正在对一个简单的方法进行一些单元测试 但仅当我在单元测试模式下运行测试类时才会收到此错误消息 java lang IllegalStateException No transactional
  • 如何使用poi在java中读取excel(.xlsx)?

    我正在尝试用java读取excel 我有以下代码 import java io FileInputStream import java io IOException import java io InputStream import jav
  • PHP 中的 MACTripleDES

    我正在尝试获得与 C 等效的 MAC TripleDESMACTripleDES class 我尝试过以下mcrypt 但这只是 TripleDES 中的编码 我需要获取与 C 中生成的字符串等效的 MACTripleDES 字符串来验证消
  • Google OAuth 2 授权 - 将代码交换为令牌

    我正在尝试实施 Google OAuth 2 以访问 Google API 我跟随this指南 使用服务器端场景 我获取代码没有问题 服务器重定向到 localhost 这是目前重定向 URI 中允许的唯一服务器 为了实现这一目标 我去ht
  • 如何使用Tkinter模仿这个表?

    如何开始使用 Tkinter 创建类似的表 使用 Ttk TkinterTreeview小部件 这提供了一个树型布局或listview带有标题布局的样式列 As the Treeview小部件来自 Tk 的主题图标集 它在 Windows
  • 在prepareForSegue方法中防止segue?

    是否可以取消segueprepareForSegue method 我想在转场之前执行一些检查 如果条件不成立 在这种情况下 如果某些UITextField为空 显示错误消息而不是执行 segue 在 iOS 6 及更高版本中这是可能的 你
  • 用于 mysql 的开源 ER 图表工具 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想对我拥有的数据库的数据库定义转储进行逆向工程 导入到图表形式 然后由于在这个特定数据库中没有定义外键 我希望能够手动创建表到表键映射 使用 cr
  • 将动态 JSON 对象传递到 Web API - Newtonsoft 示例

    我需要将动态 JSON 对象传递到我的 Web API 控制器 以便我可以根据它的类型对其进行处理 我尝试过使用 JSON NET 示例可以在这里看到但是当我使用Fiddler时 我可以看到传入的JObect始终为空 这是粘贴到 Fiddl
  • 来自嵌套字典的 Pandas 数据框

    我的字典看起来像这样 x b 10 c 20 y b 33 c 44 我想获得一个如下所示的数据框 index col1 col2 val 0 x b 10 1 x c 20 2 y b 33 3 y c 44 我尝试调用 pandas f