使用两个现有列创建两个新列

问题描述 投票:0回答:2

我想创建一个函数。我的数据帧是df' and it has two columns AcandAt`。两者都有整数值。

我想创建两个新列ct

  • 如果Ac == Atthenc = 1andt = 1`
  • 如果是Ac > At,则是c=0 and AP=5
  • 如果Ac < At,则为c'=1 and AP=3

我尝试了这个,但是没有得到任何错误也没有得到任何结果。

def my_fun(row): 
    if df.loc[row,"Ac"] == df.loc[row,"At"]:
        df.loc[row,"Ac"] = 1
        df.loc[row,"At"] = 1
    elif df.loc[row,"FTHG"] > df.loc[row,"FTAG"]:
        df.loc[row,"Ac"] = 0
        df.loc[row,"At"] = 5
    else:
        df.loc[row,"Ac"] = 1
        df.loc[row,"At"] = 3
python pandas dataframe
2个回答
2
投票

您可以尝试np.select而不是循环:

np.select

cond1 = df['FTHG'].eq(df['FTAG'])
choice1 = [1,1]
cond2 = df['FTHG'].gt(df['FTAG'])
choice2 = [3,0]
cond3 = df['FTHG'].lt(df['FTAG'])
choice3 = [0,3]
df[['HP','AP']]= pd.DataFrame(np.select([cond1[:,None],cond2[:,None],cond3[:,None]],
                                        [choice1,choice2,choice3]))
print(df)

0
投票

您可以使用 FTHG FTAG HP AP 0 4 0 3 0 1 1 5 0 3 2 0 3 0 3 3 5 2 3 0 4 7 5 3 0

np.select
© www.soinside.com 2019 - 2024. All rights reserved.