Pandas Dataframe:获取max元素的索引

JNe*_*ens 3 python indexing dataframe pandas

我正在寻找一种方法来获取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
Run Code Online (Sandbox Code Playgroud)

这给了我以下DataFrame:

  | 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
Run Code Online (Sandbox Code Playgroud)

之后,我使用的unstack方法:

unstacked = scores.unstack().copy()
unstacked.sort(ascending=False)
Run Code Online (Sandbox Code Playgroud)

这给了我:

16  11    5
46  46    0
16  31    0
11  31    0
    36    0
...
Run Code Online (Sandbox Code Playgroud)

如何获得最大值的索引和列?我想得到一个包含数组或元组的东西(16, 11).

fix*_*xer 6

您正在寻找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
Run Code Online (Sandbox Code Playgroud)

最大值的行:

In [1337]: max(x.idxmax())
Out[1337]: 2
Run Code Online (Sandbox Code Playgroud)

最大值的列(太多maxs):

In [1359]: x.max()[x.max() == x.max(axis=1).max()].index
Out[1359]: Index([u'11'], dtype='object')
Run Code Online (Sandbox Code Playgroud)