使用多索引列对多列求和

2024-05-06

我有一个从数据透视表创建的数据框,看起来类似于:

import pandas as pd
d = {('company1', 'False Negative'): {'April- 2012': 112.0, 'April- 2013': 370.0, 'April- 2014': 499.0, 'August- 2012': 431.0, 'August- 2013': 496.0, 'August- 2014': 221.0},
('company1', 'False Positive'): {'April- 2012': 0.0, 'April- 2013': 544.0, 'April- 2014': 50.0, 'August- 2012': 0.0, 'August- 2013': 0.0, 'August- 2014': 426.0},
('company1', 'True Positive'): {'April- 2012': 0.0, 'April- 2013': 140.0, 'April- 2014': 24.0, 'August- 2012': 0.0, 'August- 2013': 0.0,'August- 2014': 77.0},
('company2', 'False Negative'): {'April- 2012': 112.0, 'April- 2013': 370.0, 'April- 2014': 499.0, 'August- 2012': 431.0, 'August- 2013': 496.0, 'August- 2014': 221.0},
('company2', 'False Positive'): {'April- 2012': 0.0, 'April- 2013': 544.0, 'April- 2014': 50.0, 'August- 2012': 0.0, 'August- 2013': 0.0, 'August- 2014': 426.0},
('company2', 'True Positive'): {'April- 2012': 0.0, 'April- 2013': 140.0, 'April- 2014': 24.0, 'August- 2012': 0.0, 'August- 2013': 0.0,'August- 2014': 77.0},}

df = pd.DataFrame(d)

                company1    company2
                FN  FP  TP  FN  FP  TP
April- 2012     112 0   0   112 0   0
April- 2013     370 544 140 370 544 140
April- 2014     499 50  24  499 50  24
August- 2012    431 0   0   431 0   0
August- 2013    496 0   0   496 0   0
August- 2014    221 426 77  221 426 77

我希望迭代多索引列的上层,为每个公司创建一个总和列:

                company1           company2
                FN  FP  TP  SUM    FN   FP  TP   SUM
April- 2012     112 0   0   112    112  0   0    112
April- 2013     370 544 140 1054   370  544 140  1054
April- 2014     499 50  24  573    499  50  24   573
August- 2012    431 0   0   431    431  0   0    431
August- 2013    496 0   0   496    496  0   0    496
August- 2014    221 426 77  724    221  426 77   724

我事先不知道公司名称,所以需要循环


您可以通过指定来计算此总和level(你想求和沿着第一层(0层),因此折叠第二层):

In [29]: df.sum(axis=1, level=0)
Out[29]:
              company1  company2
April- 2012        112       112
April- 2013       1054      1054
April- 2014        573       573
August- 2012       431       431
August- 2013       496       496
August- 2014       724       724

如果您希望它们添加到原始数据框中,如上面的示例所示,您可以在列中添加一个级别并连接:

sums = df.sum(level=0, axis=1)
sums.columns = pd.MultiIndex.from_product([sums.columns, ['SUM']])
df = pd.concat([df, sums], axis=1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用多索引列对多列求和 的相关文章

随机推荐

  • 存储DotNetOpenAuth信息和用户信息检索

    这个问题有点结构 设计问题 因为我无法找出执行任务的最佳方法 在我的 MVC 应用程序中 我使用 DotNetOpenAuth 3 4 作为我的登录信息提供程序 并且仅使用标准FormsAuthentication用于饼干等 DB中当前用户
  • 如何像mysql一样对数组进行排序

    如何对与数据库数据相同的数组进行排序 我请求谷歌分析数据 数据是一个大数组 我想将数组与本地数据库中的一些其他字段连接起来 然后我再次扩展大数组 现在我想对大数组进行排序 这与使用我的 sql 相同 如下所示 select from ga
  • 无法加载(查找)j2v8_android_x86 库

    我有一个使用的 gradle 项目j2v8 android 2 2 1 http mvnrepository com artifact com eclipsesource j2v8 j2v8 android 2 2 1库 为 V8 JS 引
  • 不带()的sizeof有什么作用? [复制]

    这个问题在这里已经有答案了 作者是这个问题 https stackoverflow com questions 18898410 2 dimensional array simple understanding当我问他什么时 他只是取笑我s
  • 如何在 Option::and_then 或 Option::map 闭包中使用 async/await 而不使用 OptionFuture?

    我想运行类似以下代码的代码 async fn get user s str gt Option
  • 我如何访问警报内容提供商

    我正在尝试访问警报提供商以获取所有启用的警报信息 所以我写了这个 public static final Uri CONTENT URI Uri parse content com android deskclock alarm Conte
  • 获取 S/MIME 签名邮件的附件

    我正在尝试通过 microsoft graph api 获取签名邮件的附件 I use a GET请求在这个网址上 https graph microsoft com v1 0 me messages AAMkAG attachments
  • 根据标准在多个需求之间分配数量

    我正在创建一个周期盘点表 表 1 将是用户输入 其中将放置找到的材料和数量 表 2 是盘点时的库存快照 我希望将找到的材料数量分配到表 2 上的数量中 直到表 1 的数量用完为止 按照从最新批次 日期代码 到最旧批次 先进先出 的顺序分配数
  • setAnnotation - 无法识别的选择器

    点击搜索按钮后在设备上运行时 我收到此错误 但它在模拟器中工作 2013 03 08 17 58 33 981 IPAD 2661 907 Slider values are min 5000 000000 and max 500000 0
  • CreateProcess error=2,系统找不到指定的文件

    我正在用java编写一个程序 它将执行winrar并解压一个jar文件 放在h myjar jar进入文件夹h new 我的java代码是这样的 import java io File import java io IOException
  • MySQL 中两个 Select 查询的结果相减

    我编写了两个 mysql 查询 一个获取一年中特定月份的总用户 注册 另一个获取一年中特定月份的活跃用户 我需要找到数量inactive当年的用户 为此 我正在考虑减去通过两个单独的查询获得的总用户数和活动用户列 以下是查询 1 Fetch
  • 如何在android listview或线性布局中动态设置marginBottom?

    friends 我想使用java代码或动态设置layout marginBottom 在列表视图或线性布局中 有人指导我如何实现这一目标吗 任何帮助 将不胜感激 ListView lst getListView LinearLayout L
  • 如何开始使用“scipy”

    我之前安装过 Python 3 4 2 和 3 5 2 在这两种情况下 我都可以在 Idle 中涉足编写和测试代码 这给了我两个窗口 一个用于代码的 运行 窗口 一个用于交互和测试的 Shell 窗口 输出 抱歉 不确定术语是否正确 现在我
  • 将美元金额动态转换为文本以包含“美元”和“美分”一词

    我需要将输入字段中输入的美元金额动态转换为文本 我能找到的最接近的解决方案几乎可以满足我的需求 但是 我希望结果文本包含 美元 一词 并删除句子末尾带有 美分 的 点 一词 这是起始原型和当前结果 function amountToWord
  • 调用未定义的函数 mcrypt_decrypt() - 即使安装了 php5-mcrypt

    所以我无法停止收到错误 PHP Fatal error Call to undefined function mcrypt decrypt in 即使我安装了 php5 mcrypt 我也重新安装了 php 好几次 但我无法让它工作 更多信
  • 使用整洁的评估语义通过字符向量进行 group_by

    我曾经这样做过 使用group by library dplyr group by lt c cyl vs mtcars gt group by dots group by gt summarise gear mean gear but n
  • 为什么桌面 AES 文件 IO 与 Android AES 文件 IO 不兼容?

    我已将一个应用程序从 Android 移植到桌面 该应用程序使用 AES 加密一些私人数据 两个应用程序都能够加密和解密数据以供自己使用 但无法解密其他应用程序的数据 AES 密钥 IV 和算法是相同的 这两个应用程序之间的主要区别在于 a
  • 如何以编程方式关闭wx.DirDialog?

    我有 wxpython 应用程序 可以在单击按钮时打开 wx DirDialog dlg wx DirDialog self Choose a directory style wx DD DEFAULT STYLE if dlg ShowM
  • 从汇编程序获取命令行参数

    通读 专业汇编语言书籍 似乎它提供了用于读取命令行参数的错误代码 我纠正了一点 现在它从段错误变成了读取参数计数 然后是段错误 这是完整的代码 data output1 asciz There are d params n output2
  • 使用多索引列对多列求和

    我有一个从数据透视表创建的数据框 看起来类似于 import pandas as pd d company1 False Negative April 2012 112 0 April 2013 370 0 April 2014 499 0