根据其他列值从列中提取int值



我有一个关于Pandas的数据框架,其中包含来自巴塞罗那足球比赛和结果的信息。

df['Match Result']包含'2:0'等信息。

我已经进行了拆分,并且有两列显示两个团队的结果。我将它们命名为['Left']['Right'],用int值表示。

现在,如果巴塞罗那在客场比赛,该队的进球数将显示在['Right']中。否则(如果在家里玩),它将显示在['Left']上。新的int列df['Barcelona_result']必须包含['Left']['Right']的int值,这取决于['Location']的值(string)是'Home'还是'Away'

所以,我试着这样做:

df['Barcelona_result']= 0
df['Barcelona_result'] = df['Barcelona_result'].astype('int')
for i in df['Location']
if i == "Home":
df.Barcelona_result += df.Left
else: df.Barcelona_result += df.Right
break

主场的结果还可以,但客场的结果就不行了。它总是取['Left']的int值。任何建议都将不胜感激。提前感谢!

我可能会这样做:

#split the result
res = df['Match Result'].astype(str).str.split(":")
#default Home
df['Barcelona_result'] = res.str[0]
#mask with second split if Location not "Home"
df['Barcelona_result'] = df['Barcelona_result'].mask(df['Location]!="Home", res.str[1])
#convert to int
df['Barcelona_result'] = df['Barcelona_result'].astype(int)

这段代码是在假设总是有结果的情况下编写的。如果您有丢失或格式化错误的结果,它可能会出错。

最新更新