2016-11-14 22 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の結果を示しています。パンダのデータフレーム適用関数のデバッグ

しかし、df ['c']では動作しません。それはなぜ機能しないのですか?

エラーメッセージは次のとおりです。

KeyError: -1L

答えて

0

私はあなたがilocnlargestが必要だと思う:

iloc
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_values

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

はありがとうございました! –

関連する問題