2016-10-05 24 views
0

我希望找出DataFrame中最大的5個數字並存儲這5個值的索引名稱和列名稱。在Pandas DataFrame中具有索引和列名的最大(n)數字

我想使用nlargest()和idxmax方法,但未能實現我想要的。我的代碼如下:

import numpy as np 
import pandas as pd 
from pandas import Series, DataFrame 
df = DataFrame({'a': [1, 10, 8, 11, -1],'b': [1.0, 2.0, 6, 3.0, 4.0],'c': [1.0, 2.0, 6, 3.0, 4.0]}) 

您能否讓我知道我該如何做到這一點。謝謝

回答

2

使用stacknlargest

max_vals = df.stack().nlargest(5) 

這會給你一個多指標,其中第一級是原始數據幀的指數,而第二級A系列是列名的給定值。這裏是max_vals樣子:

3 a 11.0 
1 a 10.0 
2 a  8.0 
    b  6.0 
    c  6.0 

要明確的將指數和列名,對max_vals指數使用get_level_values

max_idx = max_vals.index.get_level_values(0) 
max_cols = max_vals.index.get_level_values(1) 

max_idx結果:

Int64Index([3, 1, 2, 2, 2], dtype='int64') 

的結果max_cols

Index(['a', 'a', 'a', 'b', 'c'], dtype='object') 
+0

非常感謝@root。我今天學到了這些方法,並能夠獲得它。感謝您的努力。 – Mari

相關問題