我想在数据框中选择最大值,然后找出该值的索引和列名。 有办法吗?
说,在下面的示例中,我想首先找到最大值(31
),然后返回该值(20, R20D)
a = pd.DataFrame({'R05D':[1,2,3],'R10D':[7,4,3],'R20D':[31,2,4]},index=[20,25,30])
谢谢!
答案 0 :(得分:6)
如果您致电a.max(axis=0)
,您会在每列上获得一系列最大值:
R05D 3
R10D 7
R20D 31
dtype: int64
如果您在该系列节目中致电max
,那么您最多可以:
a.max(axis=0).max()
#31
为您提供最大值。类似地:
a.max(axis=0).idxmax()
#R20D
为您提供列名称和
a.max(axis=1).idxmax()
#20
会给你一行。
答案 1 :(得分:4)
将您的数据框转换为MultipleIndex系列,并使用argmax
或idxmax
函数询问最大元素的索引:
coord = a.stack().argmax()
coord
(20, 'R20D')
要获取值,请使用loc
的坐标:
df.loc[coord]
31
答案 2 :(得分:1)
由于我无法用有限的声誉发表评论,因此这是@Boud答案的一个额外答案:argmax()
不适用于我,但是使用idxmax()
解决了问题并返回(20, "R20D")
coord = a.stack().idxmax()
coord
(20, 'R20D')