Python Dataframe:获取最大元素的索引

Python Dataframe:获取最大元素的索引,python,indexing,pandas,dataframe,Python,Indexing,Pandas,Dataframe,我正在寻找一种方法来获取数据帧中最大元素的索引和列。到目前为止,这是我的代码: idx = range(0, 50, 5) col = range(0, 50, 5) scores = pd.DataFrame(np.zeros((len(idx), len(col))), index=idx, columns=col, dtype=float) scores.loc[11, 16] = 5 #Assign a random element 这为我提供了以下数据帧: | 1 6 1

我正在寻找一种方法来获取数据帧中最大元素的索引和列。到目前为止,这是我的代码:

idx = range(0, 50, 5)
col = range(0, 50, 5)
scores = pd.DataFrame(np.zeros((len(idx), len(col))), index=idx, columns=col, dtype=float)
scores.loc[11, 16] = 5 #Assign a random element
这为我提供了以下数据帧:

  | 1   6   11  16  21  26  31  36  41  46
------------------------------------------
1 | 0   0   0   0   0   0   0   0   0   0
6 | 0   0   0   0   0   0   0   0   0   0
11| 0   0   0   5   0   0   0   0   0   0
16| 0   0   0   0   0   0   0   0   0   0
21| 0   0   0   0   0   0   0   0   0   0
26| 0   0   0   0   0   0   0   0   0   0
31| 0   0   0   0   0   0   0   0   0   0
36| 0   0   0   0   0   0   0   0   0   0
41| 0   0   0   0   0   0   0   0   0   0
46| 0   0   0   0   0   0   0   0   0   0
之后,我使用
取消堆栈
方法:

unstacked = scores.unstack().copy()
unstacked.sort(ascending=False)
这给了我:

16  11    5
46  46    0
16  31    0
11  31    0
    36    0
...

如何获取最大值的索引和列?我想得到一些类似于数组或元组的东西,这些数组或元组包含
(16,11)

您正在寻找的
idxmax

In [1332]: x
Out[1332]: 
   1  6  11  16  21  26  31  36  41  46
0  0  0   0   0   0   0   0   0   0   0
1  0  0   0   0   0   0   0   0   0   0
2  0  0   5   0   0   0   0   0   0   0
3  0  0   0   0   0   0   0   0   0   0
4  0  0   0   0   0   0   0   0   0   0
5  0  0   0   0   0   0   0   0   0   0
6  0  0   0   0   0   0   0   0   0   0
7  0  0   0   0   0   0   0   0   0   0
8  0  0   0   0   0   0   0   0   0   0
9  0  0   0   0   0   0   0   0   0   0
最大值的行:

In [1337]: max(x.idxmax())
Out[1337]: 2
最大值列(太多
max
s):

这可以用来获取列,但是
max(x.idxmax())
只返回索引本身的数值最大值,而不是表中最大值的索引(在本例中很幸运,因为其他所有内容都是0)。另一种选择是:

s = x.max()[x.max() == x.max(index=1).max()].index
s = str(s[0])
max_index = x.idxmax()[s]

可能重复-这正是我想要的,但我有点惊讶没有一个更有效的答案。。。就像让idxmax在列大小写中返回一个数字一样。当您只需要整数时,您可能会存储数百万个字符串,我不明白为什么有人希望这成为默认行为@_@是的,我同意。我在时间紧迫的情况下编写了这段代码,并没有深入研究这个问题,但我搜索了很多,什么也没找到。idxmax()也很适合处理这种情况。
x.max()[x.max() == x.max(axis=1).max()].index 
s = x.max()[x.max() == x.max(index=1).max()].index
s = str(s[0])
max_index = x.idxmax()[s]