Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧中的If/Else流控制_Python_Python 3.x_Pandas_If Statement_Dataframe - Fatal编程技术网

Python 数据帧中的If/Else流控制

Python 数据帧中的If/Else流控制,python,python-3.x,pandas,if-statement,dataframe,Python,Python 3.x,Pandas,If Statement,Dataframe,我是python新手,正在研究逻辑语句。 我的目标是按队计算进球得分。(也就是说,如果一个队进了一个球,我将分配1,对手将分配-1)。下面是数据的快照。 我写的逻辑陈述如下: if data['team']== data['hometeam_team1']: data['run_score'] = 1 else: data['run_score'] = -1 但这给我带来了价值错误: ValueError: The truth value of a Series is ambi

我是python新手,正在研究逻辑语句。 我的目标是按队计算进球得分。(也就是说,如果一个队进了一个球,我将分配1,对手将分配-1)。下面是数据的快照。

我写的逻辑陈述如下:

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().
有人能提供建议吗? 非常感谢你的帮助。 谢谢
Aung

我不确定这是否有效,因为您尚未提供任何数据。但这是用于解决此类问题的一般框架。您可以在此处使用
apply
功能

data['run_score'] = data.apply(lambda row: 1 if row['team'] == row['hometeam_team1'] else -1, axis=1)

使用
panda
的好处是矢量化计算。换句话说,您很少需要为循环使用显式的
,或者使用
if
/
else
子句对每一行执行计算

相反,您可以对
pd.Series
对象执行计算。在此示例中,一个有效的解决方案是使用类似于向量化
if
/
else
子句的

import numpy as np

data['run_score'] = np.where(data['team']== data['hometeam_team1'], 1, -1)

请不要以图片形式发布数据。将其作为文本发布到代码块中,以便人们可以复制和粘贴它以尝试重现您的问题。请提供一个。您可以创建一个只包含几行和几列的可运行脚本来演示问题。然后我们可以编辑该示例并发布解决方案。我认为这里的问题是
data['team']
(以及
data['hometeam\u team1']
)返回整个列,而不是列的单个元素,因此它会给您一个ValueError,因为它是一个系列而不是单个值。亲爱的Jpp,很抱歉给您带来不便。这是第一篇帖子,我会在以后的帖子中注意到你的建议。谢谢你的建议。