我是python的新手,正在研究逻辑声明。 我的目标是按球队计算目标得分。 (即如果一支球队进球,我将分配1,对手将被分配-1)。下面是数据的快照。 Data is below
我写了如下逻辑陈述:
if data['team']== data['hometeam_team1']:
data['run_score'] = 1
else:
data['run_score'] = -1
但它给了我价值错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
任何人都可以提供建议吗? 非常感谢您的帮助。 谢谢 昂
答案 0 :(得分:2)
使用panda
的好处是矢量化计算。换句话说,很少需要使用显式for
循环或if
/ else
子句对每一行执行计算。
相反,您可以对pd.Series
个对象执行计算。在此示例中,一个有效的解决方案是使用numpy.where
,其作用类似于矢量化if
/ else
子句:
import numpy as np
data['run_score'] = np.where(data['team']== data['hometeam_team1'], 1, -1)
答案 1 :(得分:1)
我不确定这是否有效,因为你没有提供任何数据。但这是用于解决此类问题的一般框架。您可以在此处使用apply
功能。
data['run_score'] = data.apply(lambda row: 1 if row['team'] == row['hometeam_team1'] else -1, axis=1)