2017-02-14 28 views
1

其即時通訊試圖解決的問題如下:查找資格

哪個國傢俱有相對於他們的夏季金牌數和冬季金牌計數之間的最大區別他們的總金牌數?

只包括在夏季和冬季贏得至少1金的國家。 該函數返回一個字符串值

數據

黃金:夏天的金牌計數

Gold.1:冬天的金牌計數

Gold.2:黃金總

代碼

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 

我能夠得出一個答案沒有條件,國家應該在夏季和冬季,包括至少一個金牌。我希望有人能夠幫助我在在線修復錯誤2

感謝

+2

那麼''df'沒有在你的代碼中的任何地方被定義,然後你在'answer_three()'中使用它。 – roganjosh

+0

可以讓我們看看df嗎?並在第一行功能中嘗試'global df'。也許這可能是問題。 –

+1

錯誤字面上告訴你'df'沒有定義 – WhatsThePoint

回答

0

必須定義defdict(),當一個變量沒有實例化NameError例外發生。試試這個吧:

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

這只是'NameError'交換'KeyError:'Gold''。語法是用於'pandas' DataFrame(因此名稱爲'df',它是用於它們的標準名稱)。這個答案不能解決問題。 – roganjosh