具有 MultiIndex 的 DataFrame 到 dict

2023-12-28

我有一个带有多重索引的数据框。我想知道我是否以正确的方式创建了数据框(见下文)。

             01.01  02.01  03.01  04.01
bar total1     40     52     18     11
    total2     36     85      5     92
baz total1     23     39     45     70
    total2     50     49     51     65
foo total1     23     97     17     97
    total2     64     56     94     45
qux total1     13     73     38      4
    total2     80      8     61     50

df.index.values结果是:

array([('bar', 'total1'), ('bar', 'total2'), ('baz', 'total1'),
       ('baz', 'total2'), ('foo', 'total1'), ('foo', 'total2'),
       ('qux', 'total1'), ('qux', 'total2')], dtype=object)

df.index.get_level_values结果是:

<bound method MultiIndex.get_level_values of MultiIndex(levels=[[u'bar', u'baz', u'foo', u'qux'], [u'total1', u'total2']],
           labels=[[0, 0, 1, 1, 2, 2, 3, 3], [0, 1, 0, 1, 0, 1, 0, 1]],names=[]

我最终希望将 df 转换为字典字典,以便第一个字典键是 ['bar','baz', 'foo','qux'] 之一,值是日期,并制作内部字典'total1' 和 'totals2' 作为键,值是 df 的整数。 另一种解释是,例如如果 dict1 是 dict 那么调用:

dict1['bar']

将导致输出:

{u'bar':{'01.01':{'total1':40,'total2':36},'02.01':{'total1':52,'total2':85},'03.01':{'total1':18,'total2':5},'04.01':{'total1':11,'total2':92} } }

为了实现这一目标,我需要如何以及需要改变什么?这是索引问题吗?


要将整个数据帧转换为字典,请尝试:

df.groupby(level=0).apply(lambda df: df.xs(df.name).to_dict()).to_dict()

{'bar': {'01.01': {'total1': 40, 'total2': 36},
  '02.01': {'total1': 52, 'total2': 85},
  '03.01': {'total1': 18, 'total2': 5},
  '04.01': {'total1': 11, 'total2': 92}},
 'baz': {'01.01': {'total1': 23, 'total2': 50},
  '02.01': {'total1': 39, 'total2': 49},
  '03.01': {'total1': 45, 'total2': 51},
  '04.01': {'total1': 70, 'total2': 65}},
 'foo': {'01.01': {'total1': 23, 'total2': 64},
  '02.01': {'total1': 97, 'total2': 56},
  '03.01': {'total1': 17, 'total2': 94},
  '04.01': {'total1': 97, 'total2': 45}},
 'qux': {'01.01': {'total1': 13, 'total2': 80},
  '02.01': {'total1': 73, 'total2': 8},
  '03.01': {'total1': 38, 'total2': 61},
  '04.01': {'total1': 4, 'total2': 50}}}

要转换某一特定列,请在将其转换为字典之前进行选择,即

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

具有 MultiIndex 的 DataFrame 到 dict 的相关文章

随机推荐

  • 如何更改 Winforms 中的 TrackBar 刻度颜色?

    我有一个使用轨迹栏的 winforms 应用程序 BackColor 属性可以更改 但这样做会使每个 刻度 的颜色几乎不可见 我没有看到修改 勾号 颜色的显式属性 我是否缺少某些东西或改变蜱虫颜色的方法 TrackBar 是本机 Windo
  • Apollo 2.1 中的多重查询/变更

    我需要一些使用 Apollo 2 1 中新的查询和突变组件的帮助 尤其是多个查询和突变 我有以下问题 我有一个 graphql 请求 该请求取决于之前的 graphql 结果 我该如何处理这个问题 如何在已经有查询的组件中添加两个不同的突变
  • 设置 Linux 中可用物理内存总量的限制

    我知道我应该设置mem MEMORY LIMIT 但我不知道在运行时或启动时该去哪里 以便对操作系统控制的总物理内存设置限制 我正在运行 I O 基准测试 并且我想限制可用的总体物理内存量 我找到了我正在寻找的答案 基本上 设置总可用物理内
  • 关于tinymce的“windowManager.open”方法的“body”参数

    我正在查看这个创建tinyMCE插件的示例 我想做的是打开 弹出窗口 弹出窗口内的内容以编程方式指定 无需在特定 url 加载物理页面 在tinymce容器中添加type file的输入元素 https stackoverflow com
  • GetQueuedCompletionStatus 永远阻塞

    我正在编写一个服务器应用程序 我想使用 IOCompletion 端口 因此我为服务器编写了一个原型 但我遇到了 GetQueuedCompletionStatus 的问题 它永远不会返回 它会阻塞 下面是我的代码 bool CreateS
  • UserControl 依赖属性设计时

    我正在 WPF 中创建一个简单的用户控件 其中包含一个按钮内的 TextBlock
  • 如何在数据源位置中使用sitecore查询? (动态数据源)

    是否可以将数据源位置 而不是数据源 设置为 sitecore 查询 我想要做的是将子布局的数据源位置设置为包含它的项目 当前项目 下的文件夹 子布局数据源位置应指向当前项目下的文件夹 所以我尝试将数据源位置设置为query Items 但这
  • 在讨论编程语言时,“强大”意味着什么?

    在编程语言讨论 比较的背景下 术语 能力 是什么意思 它有明确的含义吗 即使是一个定义不明确的含义 假设有人说 X 语言比 Y 语言更强大 或提出相同的问题 他们的意思是什么 或者他们想找出什么信息 它没有明确定义的含义 在这些类型的讨论中
  • Android 锁屏 C# .NET 副本

    我希望在 Visual Studio C 中创建一个模仿 Android 模式锁定屏幕的应用程序 并且想知道是否有人有任何这样做的提示 这不是一个商业项目 不会赚钱 只是一点乐趣 我一直在玩 WPF 项目 现在不知所措 我想到的唯一方法是在
  • Spark 中的 Dataframe 连接可以保留顺序吗?

    我目前正在尝试将两个数据帧连接在一起 但在其中一个数据帧中保留相同的顺序 From 哪些操作保留 RDD 顺序 https stackoverflow com questions 29284095 which operations pres
  • React Native + Firebase 存储:base64 和 blob 不起作用

    我试图将我的图像文件编码为 base64 或 blob 但它们都不起作用 我也在用这个 https github com react community react native image picker https github com
  • 如何在 Pnotify 中将焦点设置在按钮上

    我在我的项目中使用 pnotify Alert jquery 我试图在弹出对话框时将焦点设置在 确定 按钮上 这样用户只需按 Enter 或空格键即可关闭对话框 但无法做到这一点 这是 pnotify 的链接 http sciactive
  • Ruby“.downcase!”和“downcase”混淆

    我刚刚开始 Ruby 编程 我读过小写和小写的区别 在红宝石中 https stackoverflow com questions 709229 difference between downcase and downcase in rub
  • 使用 dplyr mutate 将向量分成两列

    假设我有以下功能 get answer lt function condition dp rp if condition DD result lt rbinom n 2 size 1 prob dp if condition in c DR
  • 在 Android 中捕获完整的日志

    我想知道如何从 Android 设备获取完整日志 从我的应用程序初始化到任何崩溃或直到强制关闭我的应用程序 我在这里发帖的原因是我的应用程序在某个时候崩溃了 但是当我使用日志时DDMS Logcat我的崩溃详细信息已被新日志覆盖 我如何获取
  • 从堆栈内存中删除结构

    我有一个链表结构 我想将一个节点 另一个结构 指针传递给一个函数 该节点是链表的一部分 但我将节点单独传递给删除器函数 我希望它将下一个节点数据复制到自身中 覆盖其数据 并删除下一个节点 从而删除自身 这部分正在工作 我让它检查传递的节点是
  • @Html.BeginForm 在页面上显示“System.Web.Mvc.Html.MvcForm”

    我有一个剃刀视图 我在 if 语句内部添加了一个删除按钮 当视图在浏览器中呈现时 它会显示 系统 Web Mvc Html MvcForm 删除按钮旁边 我该如何摆脱它 这是代码 div if update User UserName Eq
  • processing.js 如何检测浏览器的大小?

    如前所述 processing js 如何响应浏览器的大小 响应式设计 我尝试过 screen width 和 screen height 但效果不佳 看来只能检测电脑屏幕尺寸的大小 更重要的是 我想在拖动并更改浏览器大小时与窗口大小保持同
  • C++数学表达式的错误结果[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我必须计算
  • 具有 MultiIndex 的 DataFrame 到 dict

    我有一个带有多重索引的数据框 我想知道我是否以正确的方式创建了数据框 见下文 01 01 02 01 03 01 04 01 bar total1 40 52 18 11 total2 36 85 5 92 baz total1 23 39