我有一个pandas数据框,我想检索该数据框中最大值的位置(行,列)。我该怎么办?
jsftgkafgjag 回答:熊猫最大数量的位置
示例:
df = pd.DataFrame({
'B':[4,5,4,4],'C':[7,8,9,2,3],'D':[1,3,7,1,0],'E':[5,6,})
首先,必要时仅获取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,'E')]