Pandas Dataframe:获取max元素的索引

时间:2015-04-30 16:19:29

标签: python indexing pandas dataframe

我正在寻找一种方法来获取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

这给了我以下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

之后,我使用unstack方法:

unstacked = scores.unstack().copy()
unstacked.sort(ascending=False)

这给了我:

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

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

2 个答案:

答案 0 :(得分:6)

您正在寻找android:text="@string/displayThis

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 s):

max

答案 1 :(得分:1)

x.max()[x.max() == x.max(axis=1).max()].index 

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

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