获取dataframe中n个最大值的行名和列名

时间:2016-10-14 10:00:09

标签: python pandas

对于数据框

import pandas as pd
df=pd.DataFrame({'col1':[1,2],'col2':[4,5]},index=['row1','row2'])
print df
      col1  col2
row1     1     4
row2     2     5

我想得到2个最大值的行名和列名以及相应的最大值,这样得到的表达式返回如下内容:

[(row1,col2,4)(row2,col2,5)]

在熊猫中最简洁的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用stack创建Series,然后Series.nlargest创建reset_index,最后通过列表理解创建tuples

print (df)
      col1  col2
row1     1     4
row2     2     5

df1 = df.stack().nlargest(2).reset_index()
print (df1)
  level_0 level_1  0
0    row2    col2  5
1    row1    col2  4

tuples = [tuple(x) for x in df1.values]
print (tuples)
[('row2', 'col2', 5), ('row1', 'col2', 4)]