Python 数据帧中的If/Else流控制
我是python新手,正在研究逻辑语句。 我的目标是按队计算进球得分。(也就是说,如果一个队进了一个球,我将分配1,对手将分配-1)。下面是数据的快照。 我写的逻辑陈述如下: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
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,很抱歉给您带来不便。这是第一篇帖子,我会在以后的帖子中注意到你的建议。谢谢你的建议。