如果/ Else流控制在pandas数据帧中

时间:2018-05-05 15:42:55

标签: python python-3.x pandas if-statement dataframe

我是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().

任何人都可以提供建议吗? 非常感谢您的帮助。 谢谢 昂

2 个答案:

答案 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)