2017-02-14 1 views
1

Вопрос, который им пытается решить следующий образом:Finding Приемлемость страны из приведенных данных с помощью питона

Каких страна имеет самую большую разницу между их летней рассчитывает золотую медаль и подсчеты медали зима золото по отношению к их общая сумма золотых медалей?

Включить только страны, которые выиграли как минимум 1 золото как летом, так и зимой. Эта функция должна возвращать единственное строковое значение

данных

Золото: Количество летних золотых медалей

Gold.1: Количество зимних золотых медалей

Gold.2: Total Gold

Код

def answer_three():  
    df1=df[(df['Gold']>0) & (df['Gold.1']>0)]  
    df['difference']=(df1['Gold']-df1['Gold.1']).abs()/df1['Gold.2']  
    return df['difference'].idxmax()  
answer_three() 

Ошибка

NameError         Traceback (most recent call last) 
<ipython-input-7-cf807e29ca1b> in <module>() 
     3  df['difference']=(df1['Gold']-df1['Gold.1']).abs()/df1['Gold.2'] 
     4  return df['difference'].idxmax() 
----> 5 answer_three() 
     6 

<ipython-input-7-cf807e29ca1b> in answer_three() 
     1 def answer_three(): 
----> 2  df1=df[(df['Gold']>=1) & (df['Gold.1']>=1)] 
     3  df['difference']=(df1['Gold']-df1['Gold.1']).abs()/df1['Gold.2'] 
     4  return df['difference'].idxmax() 
     5 answer_three() 

NameError: name 'df' is not defined 

Я могу получить ответ без условия, что страна должна иметь по крайней мере 1 золотую медаль как летом, так и зимой. Я надеюсь, кто-то может помочь мне с фиксацией ошибки в строке 2

Благодарности

+2

Ну, 'df' не определен нигде в вашем коде, прежде чем использовать его в' answer_three() '. – roganjosh

+0

Можно ли посмотреть на df? и попробуйте 'global df' в первой строке функции. возможно, это может быть проблемой. –

+1

ошибка буквально говорит вам, что 'df' isnt определено – WhatsThePoint

ответ

0

Вы должны определить def как dict(), то NameError исключение происходит, когда переменная не экземпляр. Попробуйте следующее:

def answer_three(): 
    df = {} 
    df1=df[(df['Gold']>0) & (df['Gold.1']>0)] 
    .... 
+0

Это просто меняет' NameError' для 'KeyError: 'Gold''. Синтаксис предназначен для DataFrame 'pandas' (отсюда и имя' df', которое является стандартным именем, используемым для них). Этот ответ не решает проблему. – roganjosh

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