在 Pandas 中查找轴上 N 个最大值的索引
Finding the indexes of the N maximum values across an axis in Pandas
我知道有一种方法 .argmax() returns 轴上最大值的索引。
但是,如果我们想要获取轴上 10 个最高值的索引怎么办?
这是如何实现的?
例如:
data = pd.DataFrame(np.random.random_sample((50, 40)))
IIUC,比方说,如果你想获得前 10 个最大列数的索引 col
:
data[col].nlargest(10).index
您可以使用 argsort
:
s = pd.Series(np.random.permutation(30))
sorted_indices = s.argsort()
top_10 = sorted_indices[sorted_indices < 10]
print(top_10)
输出:
3 9
4 1
6 0
8 7
13 4
14 2
15 3
19 8
20 5
24 6
dtype: int64
试一试。这将获取一行中的 10 个最大值并将它们放入数据框中。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random_sample((50, 40)))
df2 = pd.DataFrame(np.sort(df.values)[:,-10:])
我知道有一种方法 .argmax() returns 轴上最大值的索引。
但是,如果我们想要获取轴上 10 个最高值的索引怎么办?
这是如何实现的?
例如:
data = pd.DataFrame(np.random.random_sample((50, 40)))
IIUC,比方说,如果你想获得前 10 个最大列数的索引 col
:
data[col].nlargest(10).index
您可以使用 argsort
:
s = pd.Series(np.random.permutation(30))
sorted_indices = s.argsort()
top_10 = sorted_indices[sorted_indices < 10]
print(top_10)
输出:
3 9
4 1
6 0
8 7
13 4
14 2
15 3
19 8
20 5
24 6
dtype: int64
试一试。这将获取一行中的 10 个最大值并将它们放入数据框中。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random_sample((50, 40)))
df2 = pd.DataFrame(np.sort(df.values)[:,-10:])