对于数据框
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)]
在熊猫中最简洁的方法是什么?
答案 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)]