Python 将函数转换为类
我的数据框中有以下列: 我在数据框中添加了一个新列,以便显示获奖者的姓名: 如果团队1的目标>团队2的目标,那么赢家是团队1的名字 我使用了以下功能,它可以正常工作:Python 将函数转换为类,python,pandas,class,Python,Pandas,Class,我的数据框中有以下列: 我在数据框中添加了一个新列,以便显示获奖者的姓名: 如果团队1的目标>团队2的目标,那么赢家是团队1的名字 我使用了以下功能,它可以正常工作: def winner(row): if row['Team 1 goals'] > row['Team 2 goals']: return row['Team 1 name'] elif row['Team 2 goals'] > row['Team 1 goals']:
def winner(row):
if row['Team 1 goals'] > row['Team 2 goals']:
return row['Team 1 name']
elif row['Team 2 goals'] > row['Team 1 goals']:
return row['Team 2 name']
else:
return 'Draw'
df['Winner of The Game'] = df.apply(winner, axis=1)
但是,我需要将这段代码用作一个类
我使用这样的类:
class winner:
def __init__(self,row):
self.row=row
def winner(row):
if self.row['Team 1 goals'] > self.row['Team 2 goals']:
return obj['Team 1 name']
elif self.row['Team 2 goals'] > self.row['Team 1 goals']:
return self.row['Team 2 name']
else:
return 'Draw'
此时,我的表中的最终输出将如下所示(它不会显示获胜团队的正确名称):
我应该如何修复我的类,以便它显示正确的优胜者团队的名称
class winner:
def __init__(self,row):
self.row=row
def winner(row):
return 'Draw'
df = pd.DataFrame([[1],[2],[3]],columns=['a'])
df['new']= df.apply(winner.winner,axis=1)
df
class winner:
def __init__(self,row):
self.row=row
def winner(row):
return 'Draw'
df = pd.DataFrame([[1],[2],[3]],columns=['a'])
df['new']= df.apply(winner.winner,axis=1)
df
您正在应用类,而不是其中的方法。使用
df.apply(winner.winner)
同样,你的缩进是错误的,这在你的代码中是正确的。像这样?wc['Winner of The Game']=wc.apply(Winner.Winner,axis=1)然后我得到了这个错误:AttributeError:type对象“winner”没有属性“winner”你有错误的缩进-你有def winner
内部def\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
-因此它找不到winner。winner
行def-winner
def-winner应该有与你正在应用而不是它里面的方法。使用df.apply(winner.winner)
同样,你的缩进是错误的,这在你的代码中是正确的。像这样?wc['Winner of The Game']=wc.apply(Winner.Winner,axis=1)然后我得到这个错误:AttributeError:type对象“winner”没有属性“winner”你有错误的缩进-你有def winner
在def\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
中-因此它找不到winner。winner
行def winner