Python 级数真值的问题是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

Python 级数真值的问题是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all(),python,pandas,dataframe,Python,Pandas,Dataframe,我得到了一个系列的真值是模糊的错误。使用a.empty、a.bool()、a.item()、a.any()或a.all(),在下面的代码中,基本上我正在尝试索引到索引的比较: data["observation"] = "Class 1" if (data["Result1"] > data["Result2"]) else "Class 2" 我尝试使用空,但结果似乎不正确,类似于任何和所有,结果不是我想要的 请如何更正?使用: data["observation"] = pd.np.

我得到了一个系列的真值是模糊的错误。使用a.empty、a.bool()、a.item()、a.any()或a.all(),在下面的代码中,基本上我正在尝试索引到索引的比较:

data["observation"] = "Class 1" if (data["Result1"] > data["Result2"]) else "Class 2"
我尝试使用空,但结果似乎不正确,类似于任何和所有,结果不是我想要的

请如何更正?

使用:

data["observation"] = pd.np.where(data["Result1"] > data["Result2"], "Class 1", "Class 2")
如果您将
pandas
导入为
pd
(使用
将pandas导入为pd
),则该方法有效;否则,如果您仅使用
导入pandas
,则使用
pandas.np.where(…)

或者,要使用列表理解语法(我认为您正试图这么做),请使用:

data["observation"]=["Class 1" if i["Result1"] >i["Result2"] else "Class 2" for _, i in data.iterrows()]

但是,对于大型数据帧来说,这可能是非常不够的。

谢谢!语法完美的地方!但是,如果我现在想添加另一个条件,data[“observation”]=pd.np.where(data[“Result1”]>data[“Result2”]和data[“Time”]==“12:00”,“Class 1”,“Class 2”),它不起作用,我得到了与以前相同的错误。如果我使用位运算符也是如此&即使使用正确的括号?例如:
pd.np.where((data[“Result1”]>data[“Result2”])和(data[“Time”]=“12:00”),“Class 1”,“Class 2”)
?我没有把第二个条件括起来,它用正确的括号括起来,非常感谢您指出这一点。