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

MultiIndex DataFrame列最大值查找及指定数据集可复现代码请求

Got it,我来帮你解决这两个问题,直接上干货:

1. 数据集可复现代码

你提供的energy列数据不完整,我补全了合理的数值,下面是可以直接运行的完整代码,生成你需要的DataFrame并设置MultiIndex:

import pandas as pd

# 完整构建数据集字典
data = {
    'player': ['a']*9 + ['b']*9 + ['c']*9,
    'week': ['1','1','1','2','2','2','3','3','3']*3,
    'category': ['RES','VIT','MATCH']*9,
    'energy': [75,54,87,68,59,92,72,61,89,
               80,57,90,73,60,88,77,55,93,
               78,52,85,65,58,91,70,63,86]
}

# 创建基础DataFrame
df = pd.DataFrame(data)

# 转换为MultiIndex DataFrame(层级顺序可根据需求调整)
multi_index_df = df.set_index(['player', 'week', 'category'])

运行这段代码后,multi_index_df就是你需要的多层索引DataFrame,索引层级为player→week→category。

2. 查找某列最大值及对应相关值

这里分两种常见场景来处理:

场景1:全局查找Energy列的最大值及所有对应行

如果要找整个DataFrame中energy列的最大值,并且返回所有达到该最大值的行(可能有多行),可以这么做:

# 获取Energy列的全局最大值
max_energy_val = multi_index_df['energy'].max()

# 筛选出所有Energy等于最大值的行
max_energy_rows = multi_index_df[multi_index_df['energy'] == max_energy_val]

# 输出结果
print(f"Energy列的全局最大值为: {max_energy_val}")
print("对应所有相关数据:")
print(max_energy_rows)

运行后会得到所有符合条件的行,包括对应的player、week、category索引值和energy值。

场景2:按层级分组查找最大值(比如每个Player的最大Energy)

如果需要按某个索引层级(比如player)分组,查找每个组内的最大值及对应行,可以用groupby配合idxmax:

# 按player分组,获取每个player的最大Energy值
player_max_energy = multi_index_df.groupby(level='player')['energy'].max()

# 获取每个player对应最大Energy的完整行数据
player_max_rows = multi_index_df.loc[multi_index_df.groupby(level='player')['energy'].idxmax()]

# 输出结果
print("每个Player的最大Energy及对应数据:")
print(player_max_rows)

这种方式可以灵活适配不同的分组需求,比如按week分组查找每周的最大Energy,只需要把level='player'改成level='week'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:49:31