Method 1
Will give the output as same as the size of the input dataframe, only the top 10 values will be there and reset of the values will be null, so the index of top 10 values of each column is retained.
In [2]: import pandas as pd
In [3]: import numpy as np
In [4]: df = pd.DataFrame(np.random.rand(100,100))
In [5]: out = df.apply(lambda x: x.sort_values(ascending=False).head(10), axis=0)
In [6]: out
Out[6]:
0 1 2 3 4 5 6 \
0 NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN
3 0.884964 NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN 0.950102 NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN 0.990906 NaN
8 NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN 0.953309
10 NaN NaN 0.932619 NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN 0.930249
12 NaN 0.907756 NaN NaN NaN NaN NaN
13 NaN NaN NaN NaN NaN NaN NaN
14 NaN NaN NaN NaN NaN NaN NaN
15 NaN NaN NaN NaN NaN 0.947548 NaN
16 0.952427 NaN NaN 0.933285 NaN NaN NaN
17 NaN NaN NaN NaN NaN NaN NaN
18 0.908944 NaN NaN NaN NaN 0.944756 NaN
19 NaN NaN NaN NaN NaN NaN NaN
20 NaN NaN NaN NaN NaN NaN NaN
21 NaN NaN NaN NaN NaN NaN NaN
22 NaN NaN NaN NaN NaN NaN 0.936263
23 NaN NaN NaN NaN 0.959198 NaN NaN
24 0.938916 NaN NaN NaN NaN 0.974316 NaN
25 NaN NaN NaN NaN NaN NaN 0.901233
26 NaN NaN NaN NaN NaN NaN NaN
27 NaN NaN NaN NaN NaN NaN NaN
28 NaN NaN 0.938866 NaN NaN NaN 0.948390
29 NaN NaN NaN NaN NaN NaN NaN
Method 2
This will give a list of series with index information.
In [7]: top10 = list()
In [8]: def process(col):
...: top10.append(col.sort_values(ascending=False).head(10))
...:
In [9]: df.apply(process,axis=0)
In [10]: top10
Out[10]:
[47 0.968147
65 0.959752
16 0.952427
24 0.938916
69 0.936472
60 0.922857
63 0.922337
18 0.908944
95 0.888692
3 0.884964
Name: 0, dtype: float64, 41 0.993644
39 0.976932
77 0.969164
47 0.966638
32 0.963084
72 0.941212
42 0.922804
49 0.919793
64 0.917230
12 0.907756
Name: 1, dtype: float64, 56 0.994861
33 0.985983
37 0.985021
79 0.981566
63 0.975600
53 0.953656
35 0.940664
28 0.938866
86 0.933991
10 0.932619
Name: 2, dtype: float64, 50 0.999863