You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Pandas DataFrame的相同类别分组并提取指定列的极值

解决方法

这需求用Pandas的分组聚合功能就能完美实现,我给你最直接的代码方案:

首先,我们可以利用groupby按class字段分组,然后对top列取最小值、bot列取最大值,最后重置索引让结果符合你的目标格式:

import pandas as pd

# 初始化你的原始DataFrame
df = pd.DataFrame(
    {
        "class": ["a","a","b","b","b","c","c","c","c","c","c"],
        "top": [5.1,6.9,12.1,14.2,16,2.1,2.9,3.8,4.5,5,6.1],
        "bot": [5.8,7.1,13.8,15.9,16.7,2.8,3.5,4.1,4.9,5.5,7]
    }
)

# 核心分组聚合逻辑
result_df = df.groupby('class').agg(
    {'top': 'min', 'bot': 'max'}
).reset_index()

# 查看结果
print(result_df)

代码解释

  • groupby('class'):将整个DataFrame按照class列的不同值分成若干组(a组、b组、c组)。
  • agg({'top': 'min', 'bot': 'max'}):对每个分组指定聚合规则——top列取该组的最小值,bot列取该组的最大值。
  • reset_index():把原本作为索引的class列重新变回普通数据列,同时生成新的连续索引,和你想要的目标结果结构完全匹配。

运行这段代码后,输出结果就是你需要的:

索引classtopbot
0a5.17.1
1b12.116.7
2c2.17.0

内容的提问来源于stack exchange,提问作者user026

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 22:17:37