如何查找Pandas DataFrame中3个最大值的行列索引位置
查找Pandas DataFrame中Top N最大值的位置索引
嘿,我来帮你搞定这个需求!要找出给定DataFrame里前3个最大值对应的[row index, column index],咱们可以用Pandas的几个工具方法组合实现,完全符合你的预期结果。
完整实现代码
import pandas as pd # 初始化你的DataFrame df = pd.DataFrame([[1, 10, 1], [6, 1, 1], [1,1,9]]) # 步骤1:将DataFrame转为多层索引的Series stacked_df = df.stack() # 这一步会把每个元素的位置变成(row_idx, col_idx)的双层索引 # 步骤2:提取前3个最大值 top3_values = stacked_df.nlargest(3) # 步骤3:将双层索引转为目标格式的列表 result = top3_values.index.to_list() print(result) # 输出: [[0, 1], [2, 2], [1, 0]]
分步解释
df.stack():把原DataFrame的列索引“堆叠”成第二层索引,这样每个元素的索引就变成了(行索引, 列索引)的元组,方便我们直接获取位置信息。nlargest(3):直接筛选出Series中数值最大的前3个元素,自动保留它们的索引信息。index.to_list():把多层索引的元组转换成列表的格式,正好得到你想要的[[行, 列], ...]结构。
如果遇到有重复最大值的情况,这个方法也能正常工作——它会保留所有并列的最大值(如果数量超过3的话,会按索引顺序取前3个)。
内容的提问来源于stack exchange,提问作者Brigitte Maillère
相关产品推荐
相关产品推荐

