2016-11-14 50 views
1
import numpy as np 
import pandas as pd 

df = pd.DataFrame({ 
    'a': [4, 5, 3, 1, 2], 
    'b': [20, 10, 40, 50, 30], 
    'c': [25, 20, 5, 15, 10] 
}) 

def second_largest1(df1): 
    return df1[df1.argmax()-1] 

print second_largest1(df['a']) 
print second_largest1(df['b']) 
print second_largest1(df['c']) 

我的'second_largest1'功能工作分別顯示df ['a']和df ['b'],4和40的結果。Pandas DataFrame應用功能調試

但是,它不適用於df ['c']。爲什麼它不起作用?

的錯誤信息是:

KeyError: -1L

回答

0

我認爲你需要nlargestiloc

def second_largest1(df1): 
    return df1.nlargest(2).iloc[1] 

print (second_largest1(df['a'])) 
4 
print (second_largest1(df['b'])) 
40 
print (second_largest1(df['c'])) 
20 

或者sort_valuesiloc

def second_largest1(df1): 
    return df1.sort_values(ascending=False).iloc[1] 
+0

太感謝你了! –