Home > Mobile >  Finding the indexes of the N maximum values across an axis in Pandas
Finding the indexes of the N maximum values across an axis in Pandas

Time:08-30

I know that there is a method .argmax() that returns the indexes of the maximum values across an axis.

But what if we want to get the indexes of the 10 highest values across an axis?

How could this be accomplished?

E.g.:

data = pd.DataFrame(np.random.random_sample((50, 40)))

CodePudding user response:

You can use argsort:

s = pd.Series(np.random.permutation(30))
sorted_indices = s.argsort()
top_10 = sorted_indices[sorted_indices < 10]
print(top_10)

Output:

3     9
4     1
6     0
8     7
13    4
14    2
15    3
19    8
20    5
24    6
dtype: int64

CodePudding user response:

IIUC, say, if you want to get the index of the top 10 largest numbers of column col:

data[col].nlargest(10).index

CodePudding user response:

Give this a try. This will take the 10 largest values across a row and put them into a dataframe.

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:])
  • Related