Python 将函数转换为类

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']:

我的数据框中有以下列:

我在数据框中添加了一个新列,以便显示获奖者的姓名:

如果团队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']:
        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