Python的 - ValueError异常:(“只能比较相同标记系列的对象”,“在指数Alkaline_Phosphotase发生”)

问题描述 投票:0回答:1

我有一个名为数据2数据帧,其由583观察和11个变量。有数据提供的异常值。我想我的推诿名为,B和C 3个变量的异常值。都是Int64的类型。使用IQR和平均值估算technique.I从我的数据2 Q1和Q3创建了两个变量。

Q1 = data2[['a','b','c']].quantile(0.25)
Q3 = data2[['a','b','c']].quantile(0.75)
IQR = Q3 - Q1
print (IQR)

然后,我定义了两个变量,即和LOWER_LIMIT UPPER_LIMIT。

lower_limit = Q1 - 1.5 * IQR
upper_limit = Q3 + 1.5 * IQR

然后我发现A,B和C的平均值。

mean_value = data2[['a','b','c']].mean()
print(mean_value)

然后,我创建了一个功能。

def imputer(value):
if value < lower_limit or value > upper_limit:
    return mean_value
else:
    return value

现在,当我想用​​我以前创建转嫁给功能把值代入数据帧。

results = data2[['a','b','c']].apply(imputer) #Error Line

它让我错误说ValueError异常:“只能比较相同标记系列的对象。

任何人的帮助表示赞赏。

python pandas numpy dataframe data-science
1个回答
0
投票

我试图通过改变axis apply方法的属性来做到这一点,我还检查Series' where方法,但无济于事。毕竟这是我想出的是,不要用你的imputer方法

for col in ['a', 'b', 'c']:
    data2[col] = data2.apply(lambda row: mean_value[col] if (row[col] < lower_limit[col] and row[col] > upper_limit[col]) else row[col], axis=1)

我知道这可能是无效率的,但如果任何人有一个有效的答案,或者你正在做的方式,则可以是巨大的。

© www.soinside.com 2019 - 2024. All rights reserved.