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

如何在Pandas DataFrame中获取最值及按姓名分组的班级数据

Pandas DataFrame 操作问题解答

原始数据定义

import pandas as pd
data = [(1,"tom", 23),
        (1,"nick", 12),
        (1,"jim",13),
        (2,"tom", 44),
        (2,"nick", 56),
        (2,"jim",77),
        (3, "tom", 88),
        (3, "nick", 10),
        (3, "jim", 13),
        ]

df = pd.DataFrame(data, columns=['class', 'Name','number'])

对应的DataFrame输出:

class  Name  number
0      1   tom      23
1      1  nick      12
2      1   jim      13
3      2   tom      44
4      2  nick      56
5      2   jim      77
6      3   tom      88
7      3  nick      10
8      3   jim      13

问题1:获取DataFrame的最大值和最小值

  • 全局列级最值:直接调用max()和min()方法,会返回每一列的最值

    # 各列最大值
    column_max = df.max()
    # 各列最小值
    column_min = df.min()
    

    输出示例:

    class       3
    Name      tom
    number     88
    dtype: object
    
  • 特定列最值:指定列名后调用方法,仅返回目标列的最值

    # 获取number列的最大值
    num_max = df['number'].max()
    # 获取number列的最小值
    num_min = df['number'].min()
    

问题2:按要求提取并展示数据

需求:先获取class=1分组中各Name对应的number值,再按相同Name、不同class的顺序展示数据,输出指定格式。

实现代码:

# 按Name分组,遍历每个分组的数据
for name, group in df.groupby('Name'):
    # 按class升序排序,保证输出顺序正确
    sorted_group = group.sort_values('class')
    # 逐行输出指定格式内容
    for _, row in sorted_group.iterrows():
        print(f"[name ={row['Name']}, class={row['class']}, number ={row['number']}]")

执行后输出:

[name =jim, class=1, number =13]
[name =jim, class=2, number =77]
[name =jim, class=3, number =13]
[name =nick, class=1, number =12]
[name =nick, class=2, number =56]
[name =nick, class=3, number =10]
[name =tom, class=1, number =23]
[name =tom, class=2, number =44]
[name =tom, class=3, number =88]

如果需要仅展示class=1中存在的Name(当前示例中所有Name都满足),可以先筛选再处理:

# 提取class=1中的所有Name
target_names = df[df['class'] == 1]['Name'].unique()
# 过滤出目标Name的数据并分组展示
filtered_df = df[df['Name'].isin(target_names)]
for name, group in filtered_df.groupby('Name'):
    sorted_group = group.sort_values('class')
    for _, row in sorted_group.iterrows():
        print(f"[name ={row['Name']}, class={row['class']}, number ={row['number']}]")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:40:29