首页 > 解决方案 > Pandas 中最大值的位置

问题描述

我有一个熊猫数据框,我想检索数据框中最大值的位置(行、列)。我能怎么做?

标签: pandasdataframedata-science

解决方案


样本:

df = pd.DataFrame({

         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],

})

首先,如有必要,仅通过以下方式获取数字DataFrame.select_dtypes

df = df.select_dtypes(np.number)

要返回 DataFrame 中的第一个最大值,请DataFrame.stack使用Series.idxmax

print (df.stack().idxmax())
(2, 'C')

如果性能很重要,则通过与最大值比较来获取索引,numpy.where并通过索引获取第一个值:

r, c = np.where(df == df.values.max())
print ((df.index[r[0]], df.columns[c[0]]))
(2, 'C')

如果需要所有最大值:

s = df.stack()
print (s.index[s == s.max()].tolist())
[(2, 'C'), (3, 'E')

print (list(zip(df.index[r], df.columns[c])))
[(2, 'C'), (3, 'E')]

推荐阅读