2016-10-14 2 views
1

Для dataframeполучить строк и столбцов имена п максимальных значений в dataframe

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 

Я хочу, чтобы получить имя строки и имя Col из 2-х максимальных значений и согласно максимальные значения, таким образом, что в результате выражение возвращает что-то вроде этого:

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

Что является самым кратким способом сделать это в пандах?

ответ

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)] 
+0

Awesome, спасибо за этим решение! – user1934212

+0

Рад может вам помочь! – jezrael