python - 获取 pandas 分组 DataFrame 的列和组的值
问题描述
我有一个分组的熊猫数据框,如下所示:
Fx Fy Fz Mx My Mz
Model Group Support Node
Reactions 00 G P1 1 -3.0 3.0 170.0 0.0 -23.0 -1.0
P2 3 6.0 11.0 180.0 0.0 -15.0 -1.0
4 -1.0 19.0 115.0 0.0 -7.0 -1.0
Q P1 1 -1.0 7.0 550.0 0.0 -19.0 -1.0
P2 3 2404.0 15.0 2005.0 0.0 -11.0 -1.0
4 2736.0 23.0 -2995.0 0.0 -3.0 -1.0
Reactions 01 D P1 1 -1.0 -9.0 -1.0 0.0 23.0 -1.0
P2 3 -7.0 -19.0 140.0 0.0 13.0 1.0
4 -5.0 -29.0 -3950.0 0.0 3.0 1.0
G P1 1 -1.0 -1.0 10.0 0.0 15.0 -1.0
P2 3 -6.0 -6.0 10.0 0.0 10.0 6.0
4 4.0 -11.0 100.0 0.0 5.0 -11.0
Q P1 1 0.0 -5.0 400.0 0.0 27.0 -1.0
P2 3 -86.0 -15.0 -95.0 0.0 17.0 1.0
4 -110.0 -25.0 135.0 0.0 7.0 -1.0
我想为每个组获取并支持每列的最大值,以及相关的模型和节点。那是:
Group Support -> Fx,max -> Model Node
G P1 -> -1.0 -> Reactions 01 1
G P2 -> 6.0 -> Reactions 00 3
Q P1 -> 0.0 -> Reactions 01 1
Q P2 -> 2736.0 -> Reactions 00 4
对于每列 Fx 到 Mz,依此类推。
解决方案
您可以按索引级别分组,并调用自定义lambda
函数。将这些lambda
作为元组传递以控制列标题并使用idxmax
聚合函数:
df.groupby(level=[1, 2]).agg(['max',
('model', lambda x: x.idxmax()[0]),
('node', lambda x: x.idxmax()[3])])
[出去]
Fx Fy Fz \
max model node max model node max
Group Support
D P1 -1.0 Reactions 01 1.0 -9.0 Reactions 01 1.0 -1.0
P2 -5.0 Reactions 01 4.0 -19.0 Reactions 01 3.0 140.0
G P1 -1.0 Reactions 01 1.0 3.0 Reactions 00 1.0 170.0
P2 6.0 Reactions 00 3.0 19.0 Reactions 00 4.0 180.0
Q P1 0.0 Reactions 01 1.0 7.0 Reactions 00 1.0 550.0
P2 2736.0 Reactions 00 4.0 23.0 Reactions 00 4.0 2005.0
Mx My \
model node max model node max model
Group Support
D P1 Reactions 01 1.0 0.0 Reactions 01 1.0 23.0 Reactions 01
P2 Reactions 01 3.0 0.0 Reactions 01 3.0 13.0 Reactions 01
G P1 Reactions 00 1.0 0.0 Reactions 00 1.0 15.0 Reactions 01
P2 Reactions 00 3.0 0.0 Reactions 00 3.0 10.0 Reactions 01
Q P1 Reactions 00 1.0 0.0 Reactions 00 1.0 27.0 Reactions 01
P2 Reactions 00 3.0 0.0 Reactions 00 3.0 17.0 Reactions 01
Mz
node max model node
Group Support
D P1 1.0 -1.0 Reactions 01 1.0
P2 3.0 1.0 Reactions 01 3.0
G P1 1.0 -1.0 Reactions 00 1.0
P2 3.0 6.0 Reactions 01 3.0
Q P1 1.0 -1.0 Reactions 00 1.0
P2 3.0 1.0 Reactions 01 3.0
推荐阅读
- arrays - Scala Play 处理 JSON 对象和数组
- ruby-on-rails - 在范围内生成连续的唯一编号
- amazon-web-services - Amazon RDS Aurora 主/副本访问限制
- git - 推送前一个时合并 2 个 git 提交
- c - 需要在 C 中实现 malloc 和 free 的建议
- chilkat - 如何在 VBscript 中进行 POST 和 GET?
- c# - Google 语音客户端 api 中的空结果
- swift - 您如何使用自定义令牌根据 firebase 中的用户名验证用户?
- php - Ajax getJSON PHP JSON 获取 ERR_EMPTY_RESPONSE
- ruby-on-rails - 有没有更好的方法取消当前请求并重定向到 Rails 中的错误页面?