我正在寻找一种方法来获取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)
的数组或元组的内容。
答案 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]