pandas 中一个聚合中包含多个 idxmin() 和 idmax() 的多重索引

2024-03-12

在 R data.table 中,可以在一个聚合中使用 argmin 或 argmax 函数轻松聚合多列。以 DT 为例:

> DT = data.table(id=c(1,1,1,2,2,2,2,3,3,3), col1=c(1,3,5,2,5,3,6,3,67,7), col2=c(4,6,8,3,65,3,5,4,4,7), col3=c(34,64,53,5,6,2,4,6,4,67))
> DT
    id col1 col2 col3
 1:  1    1    4   34
 2:  1    3    6   64
 3:  1    5    8   53
 4:  2    2    3    5
 5:  2    5   65    6
 6:  2    3    3    2
 7:  2    6    5    4
 8:  3    3    4    6
 9:  3   67    4    4
10:  3    7    7   67

> DT_agg = DT[, .(agg1 = col1[which.max(col2)]
                , agg2 = col2[which.min(col3)]
                , agg3 = col1[which.max(col3)])
              , by= id]
> DT_agg
   id agg1 agg2 agg3
1:  1    5    4    3
2:  2    5    3    5
3:  3    7    4    7

agg1 是 col1 的值,其中 col2 的值最大,按 id 分组。

agg2 是 col2 的值,其中 col3 的值最小,按 id 分组。

agg3 是 col1 的值,其中 col3 的值最大,按 id 分组。

在 Pandas 中,使用 groupby 和 agg 在一个聚合操作中执行所有三个聚合,这怎么可能?我不知道如何在 Python 的一个 agg 函数中合并三种不同的索引。这是 Python 中的数据框:

DF =pd.DataFrame({'id':[1,1,1,2,2,2,2,3,3,3], 'col1':[1,3,5,2,5,3,6,3,67,7], 'col2':[4,6,8,3,65,3,5,4,4,7], 'col3':[34,64,53,5,6,2,4,6,4,67]})

DF
Out[70]: 
   id  col1  col2  col3
0   1     1     4    34
1   1     3     6    64
2   1     5     8    53
3   2     2     3     5
4   2     5    65     6
5   2     3     3     2
6   2     6     5     4
7   3     3     4     6
8   3    67     4     4
9   3     7     7    67

你可以试试这个,

DF.groupby('id').agg(agg1=('col1',lambda x:x[DF.loc[x.index,'col2'].idxmax()]),
                     agg2 = ('col2',lambda x:x[DF.loc[x.index,'col3'].idxmin()]),
                     agg3 = ('col1',lambda x:x[DF.loc[x.index,'col3'].idxmax()]))

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

pandas 中一个聚合中包含多个 idxmin() 和 idmax() 的多重索引 的相关文章

随机推荐

  • 为什么我的 XML 验证根据其架构失败?

    我需要根据架构验证 XML 文件 XML 文件是在代码中生成的 在保存之前 我需要验证它是否正确 我已将问题简化为最简单的要素 但遇到了问题 XML
  • 从 C# 传递 SSIS 参数

    我有一个 SSIS 包 其中设置了一些 Project params 如何通过 C 将这些参数的值传递到 SSIS 包 我正在尝试以下操作 const string pkgLocation export dtsx var app new A
  • 运行鼻子测试并将警告作为错误?

    跑步时nosetests从命令行 如何指定 不可忽略 警告应被视为错误 默认情况下 会打印警告 但不计为失败 snip service accounts database py 151 SADeprecationWarning Use se
  • 透明win32窗口和文本

    我正在尝试制作全屏透明无边框窗口 其上的文本完美显示 文本背景应该是透明的 但实际的字体当然不是 问题是 当我不执行 SetWindowRgn 时 我只能看到 TextOut 显示 我不知道我做错了什么 BOOL InitInstance
  • “动态”CSS id 名称?如何将它们添加到 CSS 文件中?

    我在应用程序中有动态生成的 DIV id 末尾有一个 ID 例如 div div div 等等 如何在 CSS 文件中写入该 id 以便对其应用样式 进一步建议您应该使用类来实现此功能 并且您should you can 而是使用 attr
  • 交换卡片时无法更新片段文本

    我正在开发卡片刷卡和卡片翻转功能 并且我正在使用 ViewPager 和片段 我的问题是 当我从左到右或从右到左滑动卡片时 我无法更新片段内的 TextView 但是当我翻转卡片时 它会更新 UI 我尝试了互联网上可用的所有解决方案 但没有
  • 正在关闭 Popover,[UIPopoverController dealloc] 在弹出窗口仍然可见时达到

    我有一个 UIPopoverController 存储在我的视图控制器的一个强属性中 当用户在弹出窗口可见时旋转 iPad 时 我会关闭弹出窗口并将属性设置为 nil if self popover nil self popover dis
  • ASP.Net MVC 中的 Google Checkout

    我有一个相当简单的 ASP Net 站点 它使用 google checkout 我有一个图像按钮 其 PostBackUrl 设置为传递隐藏字段值的 Google 地址 效果很好 我已经将此应用程序移至 MVC 但我不知道如何处理这个问题
  • Swift 可选转义闭包

    编译错误Closure use of non escaping parameter completion may allow it to escape 这是有道理的 因为它将在函数返回后被调用 func sync completion gt
  • 使用 TFS 命令行 tf.exe 如何将存储库复制到我选择的文件夹位置?

    我已开始在我的 MSVC 2015 C 项目中使用 TFVC 我习惯了像 git svn 这样的命令行存储库 我可以简单地进行签出 克隆等 并将文件复制到我喜欢的任何文件夹中 因此 我已通过 MSVS2015 GUI 将工作区检出到映射位置
  • custom_command ECHO 带有特殊字符

    我正在尝试使用 CMake 添加 custom command 并调用 COMMAND echo gt file txt 只要我把 放进去 配置文件就会生成 但构建失败 我也尝试过 echo 但似乎不起作用 add custom comma
  • 移动相机位置以适应 LatLngBounds 的标记高度

    我想将相机移动到适合的位置LatLngBounds关于标记高度 到目前为止 我可以使用以下代码来安装标记的锚点 LatLngBounds Builder builder new LatLngBounds Builder for Marker
  • AngularJS 1.2.0-rc.2 与 1.2.0 元素绑定

    我最近将 AngularJS 框架从 1 2 0 rc 2 升级到 1 2 0 版本 并遇到了一个奇怪的问题 我还没有找到解决方法 我之前解决的问题是强制输入字段在 on blur 事件而不是 on change 事件上触发 我最初使用的指
  • 指导我使用 phpleague 库实现 Oauth2 PHP 服务器

    我在用Slim Framework With Eloquent ORM https packagist org packages illuminate database 尝试实施https github com thephpleague o
  • Intellij IDEA 编译所有模块,即使我只要求 1 个

    我的项目中有几个具有复杂依赖结构的模块 当我想编译并运行 1 个模块的单元测试时 我希望 IDEA 忽略不相关模块中的任何编译错误 我怎样才能做到这一点 目前 即使我说 编译模块 1 IDEA 也会编译所有内容 我不想为此设置几个不同的项目
  • 如何控制提交网格作业时使用的 Perl 版本?

    我正在与 SGE Sun Grid Engine 合作将作业提交到网格 我也用perlbrew管理我安装的 Perl 版本 我写了一些短文sh我用来运行需要特定 Perl 版本 5 12 2 的 perl 脚本的脚本 如下所示 bin ba
  • 使用 Datastax Cassandra 本机 Java 客户端管理不同一致性级别的最佳实践

    使用 CQL3 Cassandra 一致性级别现在设置在会话级别 本机 Java 客户端的 Datastax 文档指出 会话实例是线程安全的 通常每个应用程序只需要一个实例 但我很难理解单个 Session 实例如何处理多个一致性级别 例如
  • 如何保留 SignalR 连接 ID

    我正在尝试构建一个聊天应用程序 其中用户 ID 由其自动生成的 signalR 连接 ID 表示 页面刷新时 实例化新连接时连接 ID 会发生变化 有没有办法持久保存用户连接 ID 的状态 直到浏览器会话结束 即直到他结束客户端上的会话 有
  • MySQL中将字符串存储为varchar的内存使用情况

    我开始对MySQL的内存使用非常感兴趣 所以我在这里看这个 http dev mysql com doc refman 5 0 en storage requirements html http dev mysql com doc refm
  • pandas 中一个聚合中包含多个 idxmin() 和 idmax() 的多重索引

    在 R data table 中 可以在一个聚合中使用 argmin 或 argmax 函数轻松聚合多列 以 DT 为例 gt DT data table id c 1 1 1 2 2 2 2 3 3 3 col1 c 1 3 5 2 5