使用 python 从给定数据中查找国家/地区的资格

Finding Eligibility of a country from given data using python

我想解决的问题如下:

哪个国家的夏季金牌数和冬季金牌数相对于总金牌数的差异最大?

只包括在夏季和冬季都至少赢得 1 枚金牌的国家。 此函数应该 return 单个字符串值

数据

金牌:夏季金牌数

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

我可以得出一个答案,条件是这个国家在夏季和冬季至少要有1枚金牌。我希望有人可以帮助我修复第 2

行中的错误

谢谢

您必须将def定义为dict(),当变量未实例化时会发生NameError异常。试试这个:

def answer_three():
    df = {}
    df1=df[(df['Gold']>0) & (df['Gold.1']>0)]
    ....
def answer_three():
    filterinfDataframe = df[(df['Gold'] > 0) & (df['Gold.1'] > 0) ]
    b = (filterinfDataframe['Gold']+filterinfDataframe['Gold.1']+filterinfDataframe['Gold.2'])
    a = (filterinfDataframe['Gold'] - filterinfDataframe['Gold.1'])/b
return filterinfDataframe.loc[a.idxmax()]

answer_three()