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

使用python从给定数据中查找国家的资格,python,database,data-science,Python,Database,Data Science,我试图解决的问题如下: 哪个国家的夏季金牌数和冬季金牌数与金牌总数的差距最大 仅包括在夏季和冬季至少赢得1枚金牌的国家。 此函数应返回单个字符串值 数据 金牌:夏季金牌数 金牌1:冬季金牌数 黄金。2:全部黄金 代码 def answer_three(): df1=df[(df['Gold']>0) & (df['Gold.1']>0)] df['difference']=(df1['Gold']-df1['Gold.1']).abs()/df

我试图解决的问题如下:

哪个国家的夏季金牌数和冬季金牌数与金牌总数的差距最大

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

数据

金牌:夏季金牌数

金牌1:冬季金牌数

黄金。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
namererror回溯(最近一次调用)
在()
3 df['difference']=(df1['Gold']-df1['Gold.1']).abs()/df1['Gold.2']
4返回df['difference'].idxmax()
---->5答案(三)
6.
在答复中(三)
1.答案三:
---->2 df1=df[(df['Gold']>=1)和(df['Gold.1']>=1)]
3 df['difference']=(df1['Gold']-df1['Gold.1']).abs()/df1['Gold.2']
4返回df['difference'].idxmax()
5答案(三)
NameError:未定义名称“df”
我能够得出一个答案,但条件是该国在夏季和冬季至少获得1枚金牌。我希望有人能帮我修正第2行的错误


谢谢

您必须将
def
定义为
dict()
,变量未实例化时会出现
namererror
异常。试试这个:

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

必须将
def
定义为
dict()
,变量未实例化时会出现
namererror
异常。试试这个:

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


answer_three()

好吧,
df
在您的代码中的任何地方都没有定义,在
answer_three()
中使用它。您能让我们看看df吗?并在函数的第一行尝试“全局df”。也许这就是问题所在。错误实际上告诉您,
df
没有定义好,
df
在您在
answer\u three()
中使用之前,代码中的任何地方都没有定义。您能让我们看看df吗?并在函数的第一行尝试“全局df”。也许这就是问题所在。错误字面上告诉您,
df
没有定义。这只是将
NameError
交换为
keyrorm:'Gold'
。语法用于
pandas
DataFrame(因此名称
df
,这是它们使用的标准名称)。这个答案并不能解决问题。它只是将
namererror
交换为
KeyError:'Gold'
。语法用于
pandas
DataFrame(因此名称
df
,这是它们使用的标准名称)。这个答案并不能解决问题。请给你的答案多一点上下文,不要只贴代码。请给你的答案多一点上下文,不要只贴代码。