我有一个pandas数据框,我想检索该数据框中最大值的位置(行,列)。我该怎么办?
答案 0 :(得分:0)
示例:
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')]