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).
您正在寻找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)
| 归档时间: |
|
| 查看次数: |
10983 次 |
| 最近记录: |