2016-11-14 5 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 FUNTION работы показывают результаты ФР [ «а»] и ФР [ «б»], 4 и 40 соответственно.Панды DataFrame применение функции отлаживать

Однако, он не работает на df ['c']. Почему это не работает?

Сообщение об ошибке:

KeyError: -1L

ответ

0

Я думаю, что вам нужно nlargest с 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 с iloc:

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

Спасибо так много! –

 Смежные вопросы

  • Нет связанных вопросов^_^