我想创建一个函数。我的数据帧是df' and it has two columns
Acand
At`。两者都有整数值。
我想创建两个新列c
和t
。
Ac ==
Atthen
c = 1and
t = 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
您可以尝试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)
您可以使用 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