在 pandas 的数据框中创建一个组

2024-02-24

我有一个清单,例如

groups = [['Group1', 'A', 'B'], ['Group2', 'C', 'D']]

和一个数据框,例如

A 100
B 200
C 300
D 400

我想将上面列表中的一组总和变为:

Group 1 300
Group 2 700

我如何使用 python pandas 来做到这一点? 不用说我是熊猫的新手。谢谢。


你需要创建dict by lists进而groupby http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html并聚合sum:

df = pd.DataFrame({'a': ['A', 'B', 'C', 'D'], 'b': [100, 200, 300, 400]})
print (df)
   a    b
0  A  100
1  B  200
2  C  300
3  D  400

groups = [['Group1', 'A', 'B'], ['Group2', 'C', 'D']]

#http://stackoverflow.com/q/43227103/2901002
d = {k:row[0] for row in groups for k in row[1:]}
print (d)
{'B': 'Group1', 'C': 'Group2', 'D': 'Group2', 'A': 'Group1'}

print (df.set_index('a').groupby(d).sum())
          b
Group1  300
Group2  700

是否可以稍微修改一下解决方案 - 如果只有列b聚合为sum. Last reset_index http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reset_index.html用于将索引转换为列。

df1 = df.set_index('a').groupby(pd.Series(d, name='a'))['b'].sum().reset_index()
print (df1)
        a    b
0  Group1  300
1  Group2  700

df2 = df.groupby(df['a'].map(d))['b'].sum().reset_index()
print (df2)
        a    b
0  Group1  300
1  Group2  700
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pandas 的数据框中创建一个组 的相关文章

随机推荐

  • 如何对 gtsummary 包中特征表列中的行顺序进行排序或更改?

    我正在尝试使用 tbl summary 中的函数 sort list stage alphanumeric 更改特征表列中的行顺序trial c trt age stage grade gt tbl summary by trt sort
  • 使用 Button 的 NodeJS Post 请求

    我不知道这是否可能 我所做的所有研究都表明 通过表单和文本输入是可能的 但无论如何 使用 NodeJs 和 Express 我希望能够单击网页上的按钮 单击后 它会向我的 Node JS 服务器发送一个 post 请求 更简单的说法 单击按
  • Direct2D 和 DXGI(D3D 互操作)多线程的最佳实践是什么?

    理想情况下 我希望有多个工作线程能够渲染到屏幕外渲染目标 然后将渲染的内容 传输 到屏幕上目标 对于 hwnd 渲染目标 这似乎不是问题 msdn 有一个例子 当屏幕渲染目标基于 DXGI 交换链时 我不太确定该怎么做 据我所知 每个窗口只
  • 为什么在基于范围的初始化程序中使用临时对象会导致崩溃?

    为什么以下代码在 Visual Studio 和 GCC 上都会崩溃 为了使其崩溃 需要基于范围的 for 循环 std map std string 并引用字符串 如果我删除其中任何一个 它就会起作用 include
  • 如何获取Angular2中ag网格中选定行的数据?

    我在 angular2 中设置了 ag grid 它工作正常 但我无法获取所选行的值 我的控制台窗口中没有错误 这就是我初始化网格的方式 import Component from angular2 core Component selec
  • 如何在 MVC-gui 中使用 JUNG2?

    我正在玩 JUNG2 想要实现一个小型 GUI 允许我显示和更改图表 遵循 JUNG 库中的示例效果很好 但它们没有分离模型 视图和控制器 所以我开始以干净的分离方式构建 GUI 我的第一个 GUI 版本应该是简单地显示初始图形 视图是模型
  • 是否可以在 sass 中重载 mixins ?

    假设你有一个像这样的阴影混合 mixin box shadow offset blur color moz box shadow offset offset blur color webkit box shadow offset offse
  • MySql 中的 DELIMITER 错误

    我正在使用以下sql DELIMITER DROP PROCEDURE IF EXISTS get auto increment settings CREATE PROCEDURE get auto increment settings B
  • Rails 不转换时区 (PostgreSQL)

    我对时区和 postgresql 数据库 Rails 3 0 4 PostgreSQL 9 0 有问题 我正在使用自定义范围 在其中附加一些条件 执行连接等 问题是 Rails 不会将时间转换为我的本地时区 这是范围的代码 scope wi
  • VBscript删除子文件夹

    我对 vb 脚本非常陌生 我需要一个脚本来根据起始名称 SA 和 2 天前删除几个三级子文件夹 example C abc user1 temp SA123 c abc user2 temp SA2345 c abc user3 temp
  • 如何在 VS Code 编辑器中按标题级别更改 Markdown 标题颜色?

    我的问题类似于但那里给出的答案是针对 Vim 的 我需要一个针对 VS Code 的答案 我是一个真正的新手 我尝试自己解决这个问题 但这些尝试失败了 Markdown 预览 GitHub 样式 https github com mjbvz
  • 如何复制克隆 UIElement 并保留布局/渲染信息?

    我想复制一个复杂的数据绑定UIElement但保留原始 UIElement 中的绑定 布局和渲染信息 创建一个新的UIElement似乎效率低下 因为我必须执行另一个完整的绑定 测量 排列 渲染过程 到目前为止我最接近的是创建一个新的Dra
  • 对于上下文无关语法,如何将其转换为等效的下推自动机?

    对于 0 1 2 上的上下文无关文法 G 起始变量为 S S 0S0 1S1 2S2 是是 22 我如何将其变成等效的下推自动机 下推自动机可以将符号推入堆栈顶部并将其弹出 它还可以将其转换基于最顶层的堆栈符号 我们需要考虑一种机制 允许我
  • 通过 USB 模拟 UART

    有谁知道是否可以通过 USB 模拟 UART 简单串行发送和接收 这将如何实现 我在 Microchip 网站上找到了这个链接 但不是很容易找到 http www microchip com forums m522571 print asp
  • PassportJS 自定义身份验证回调未调用

    更新 以下错误已修复a commit https github com jaredhanson passport issues 186 我已将第一个答案标记为 正确 尽管该提交在其中一条评论中引起了我的注意 我希望利用自定义回调来处理 Pa
  • 使用 .htaccess 删除 .php 扩展名

    是的 我已经阅读了 Apache 手册并在这里进行了搜索 由于某种原因 我根本无法让它发挥作用 我最接近的是让它删除扩展名 但它指向根目录 我希望它只在包含以下内容的目录中工作 htaccess file 我需要做三件事 htaccess
  • javax.net.ssl.SSLHandshakeException:在 bigquery 中插入行时,远程主机在握手期间关闭了连接

    您好 我正在开发 Android 应用程序 其中集成了 bigquery 我发现有时我们在将数据插入大型查询表时会遇到很多 SSL 异常 我不知道该如何处理这件事 请帮忙看看这个问题的具体原因是什么 这是相同的主题 但没有答案进行流式插入
  • 如何简洁地创建一个以字母为键的字典?

    我创建了一个包含 26 个字母的字典 如下所示 aDict a 1 b 2 c 3 d 4 etc 我正在努力让我的代码变得更好 我的问题是 有没有更短的方法可以做到这一点而无需输入所有这些数字 您可以使用string ascii lowe
  • AngularJS 和 Angular-UI Bootstrap 选项卡范围

    我正在使用 AngularJS 和 Angular UI Bootstrap 选项卡 这是我的控制器 app controller SettingsCtrl scope SettingsFactory stateParams functio
  • 在 pandas 的数据框中创建一个组

    我有一个清单 例如 groups Group1 A B Group2 C D 和一个数据框 例如 A 100 B 200 C 300 D 400 我想将上面列表中的一组总和变为 Group 1 300 Group 2 700 我如何使用 p