列名和最大值索引

时间:2017-03-21 15:54:25

标签: python-3.x pandas numpy dataframe

我目前有一个pandas数据帧,其中保存了0到1之间的值。我正在寻找一个函数,它可以为我提供列的前5个值,以及列的名称和值的相关索引。

  

示例输入:列名为a:z,索引为1:23的数据框,条目为0到1之间的值

     

示例输出:每列中包含5个最高条目的数组,每个条目都有列名和索引

编辑: 对于以下数据框:

    np.random.seed([3,1415])
    df = pd.DataFrame(np.random.randint(10, size=(10, 4)),    list('abcdefghij'), list('ABCD'))

df

      A  B  C  D
   a  0  2  7  3
   b  8  7  0  6
   c  8  6  0  2
   d  0  4  9  7
   e  3  2  4  3
   f  3  6  7  7
   g  4  5  3  7
   h  5  9  8  7
   i  6  4  7  6
   j  2  6  6  5

我想得到一个输出(例如第一列):

 [[8,b,A], [8, c, A], [6,i,A], [5, h, A], [4,g,A]].

2 个答案:

答案 0 :(得分:2)

考虑数据框df

np.random.seed([3,1415])
df = pd.DataFrame(
    np.random.randint(10, size=(10, 4)), list('abcdefghij'), list('ABCD'))

df

   A  B  C  D
a  0  2  7  3
b  8  7  0  6
c  8  6  0  2
d  0  4  9  7
e  3  2  4  3
f  3  6  7  7
g  4  5  3  7
h  5  9  8  7
i  6  4  7  6
j  2  6  6  5

我将使用np.argpartition将每列分隔为5个最小的10 - 5(也是5)最大

v = df.values
i = df.index.values

k = len(v) - 5
pd.DataFrame(
    i[v.argpartition(k, 0)[-k:]],
    np.arange(k), df.columns
)

   A  B  C  D
0  g  f  i  i
1  b  c  a  d
2  h  h  f  h
3  i  b  d  f
4  c  j  h  g

答案 1 :(得分:0)

print(your_dataframe.sort_values(ascending=False)[0:4])
相关问题