如何获取DataFrame最大值及对应列名、索引与Name列值?
获取DataFrame最大值及对应列名、索引和Name列值的实现方案
先明确我们的初始数据和需求:
初始DataFrame
我们有如下结构的DataFrame:
import pandas as pd df = pd.DataFrame(dict( Name=['Jason_Fly','Alan_Smith','Steve_Rowland'], Col1=[1,2,3], Col2=[1,3,9], Col3=[5,6,8] ))
对应的表格展示:
| 索引 | Name | Col1 | Col2 | Col3 |
|---|---|---|---|---|
| 0 | Jason_Fly | 1 | 1 | 5 |
| 1 | Alan_Smith | 2 | 3 | 6 |
| 2 | Steve_Rowland | 3 | 9 | 8 |
需求说明
我们需要完成:
- 提取DataFrame中的最大值
- 获取该最大值对应的列名
- 获取最大值所在的行索引,以及该行
Name列的对应值
实现代码
这里用stack()方法简化位置定位,代码如下:
import pandas as pd # 初始化DataFrame df = pd.DataFrame(dict( Name=['Jason_Fly','Alan_Smith','Steve_Rowland'], Col1=[1,2,3], Col2=[1,3,9], Col3=[5,6,8] )) # 将DataFrame堆叠为多层索引Series,每个值绑定(行索引, 列名)的位置 stacked_df = df.stack() # 获取最大值和它的位置信息 max_value = stacked_df.max() max_row_idx, max_col_name = stacked_df.idxmax() # 提取对应行的Name值 corresponding_name = df.loc[max_row_idx, 'Name'] # 按预期格式输出结果 print(f"Maximum : {max_value}") print(f"Corresponding column : {max_col_name}") print(f"Corresponding index : {max_row_idx} | Corresponding value in column Name : {corresponding_name}")
代码解释
df.stack():把原DataFrame的列转换为内层索引,让每个数值都关联它的行索引和列名,方便精准定位最大值的位置。stacked_df.idxmax():返回最大值所在的多层索引,第一个元素是行索引,第二个是列名。df.loc[max_row_idx, 'Name']:通过行索引直接提取对应行的Name列值。- 最后用f-string格式化输出,完全匹配你想要的结果样式。
输出结果
运行代码后会得到:
Maximum : 9
Corresponding column : Col2
Corresponding index : 2 | Corresponding value in column Name : Steve_Rowland
扩展:处理多个最大值的情况
如果你的DataFrame存在多个相同的最大值,上面的代码只会返回第一个出现的。如果需要输出所有最大值的信息,可以调整为:
# 获取所有最大值的位置 all_max_locations = stacked_df[stacked_df == stacked_df.max()].index # 遍历输出每个最大值的信息 for idx, col in all_max_locations: name_val = df.loc[idx, 'Name'] print(f"Maximum : {stacked_df.max()}") print(f"Corresponding column : {col}") print(f"Corresponding index : {idx} | Corresponding value in column Name : {name_val}\n")
内容的提问来源于stack exchange,提问作者Ewdlam
相关产品推荐
相关产品推荐

