我正在为泰坦尼克号沉船数据集准备模型。我正在尝试填补男性和女性成员的失踪年龄分别为31岁和28岁。
我尝试使用此代码填充失踪的男性乘客
if data[data.Sex=='male'].Age.isna():
data['Age'] = 31
并出现以下错误,
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
答案 0 :(得分:0)
if data[data.Sex=='male'].Age.isna():
data['Age'] = 31
有多个错误:
data[data.Sex=='male'].Age.isna()
返回一系列布尔值,例如:(True,False,False,True)您期望if statement
做什么?如果是,请执行以下操作,如果满足以下条件:在这里,它不是真或假,而是一系列。它不能处理导致错误的原因: ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
data[data.Sex=='male'].Age.isna()
与data['Age'] = 31
没有联系
即使if
语句为True
,data['Age'] = 31
也会将所有年龄设置为31,不仅缺少年龄。我认为那不是您想要做的。解决方案:
要实现您最可能想做的事情,可以使用:
data.loc[( (data.Sex=='male') & (data.Age.isna()) )] = 31
另外,为了使if语句返回True而不是错误,请使用:
any(data[data.Sex=='male'].Age.isna())
或all(data[data.Sex=='male'].Age.isna())
,具体取决于您要达到的目标。