我在使用groupby和函数删除异常值时遇到一个TypeError:
def is_outlier(s):
lower_limit = s.median() - (s.std() * 3)
upper_limit = s.median() + (s.std() * 3)
return ~s.between(lower_limit, upper_limit)
df1 = df[~df.groupby('objectName')['price'].apply(is_outlier)]
print(df1)
我已经用:df=df[np.isfinite(df['price'])]]
过滤了price
列中的NaN行,我应该怎么做才能使它正确返回?提前谢谢你的帮助。
File "C:\Users\User\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1143, in __invert__
arr = operator.inv(com._values_from_object(self))
TypeError: bad operand type for unary ~: 'float'
这就是我通过df['price']得到的。descripe()
,似乎很正常。
count 10755.000000
mean 7.135314
std 3.844756
min 1.000000
25% 4.700000
50% 6.000000
75% 8.500000
max 49.000000
相关参考资料:
一元的操作数类型错误
一元的操作数类型错误
我认为std
对于长度1
的组,返回NaN
s,因此使用fillna
:
def is_outlier(s):
lower_limit = s.median() - (s.std() * 3)
upper_limit = s.median() + (s.std() * 3)
return s.between(lower_limit, upper_limit)
df1 = df[~df.groupby('objectName')['price'].apply(is_outlier).fillna(True)]
问题内容: 为什么返回浮点数?我在这里应该做什么? 问题答案: 我认为有s值,所以需要指定参数:
为什么是否返回浮点值?我应该在这里做什么?
问题内容: 我无法弄清楚使用Python 2.7编写的代码存在的问题。我正在将引用转换为ints,但是我不断收到类型异常。有人可以协助吗? 我遇到了操作数异常,即使被比较的两个值在测试时都打印为整数。谁能给我一些反馈?谢谢! 这是异常响应: 问题答案: 您说这是造成麻烦的原因,但实际上您并未显示任何暗示该问题的信息。我认为这是问题所在: 您知道为什么这一行会导致该错误消息吗?你想要 要么 不 您要
使用System.集合;使用System.收藏。泛型;使用UnityEngine;公共类回击:Mono行为{公共浮点推力;公共浮点KnockTime;
我有以下代码。我知道它既长又复杂,但在我的笔记本电脑上运行需要1.5分钟。如果您能帮助我找到最后导致错误的问题-绘图部分,我将不胜感激。我在Google上没有找到与此错误消息相关的任何内容: QuadMesh和Float的不支持操作数类型 在绘图部分,我尝试了多种形式。它失败于: 在以下情况下失败: 我没有办法在那里介绍什么。 非常感谢。
问题内容: 我是python(PYTHON 3.4.2)的新手,我正在尝试制作一个可进行加法和除法运算的程序,以查找用户输入的平均值或均值,但我不知道如何添加数字接收。 当我在命令提示符下打开程序时,它接受我输入的数字,并且如果我使用打印功能,也将打印它,但不会将数字加起来。 我收到此错误: 我的代码如下: 任何帮助将不胜感激。 问题答案: 将输入作为字符串 您要告诉用户使用逗号分隔输入,因此需要