当前位置: 首页 > 知识库问答 >
问题:

TypeError:groupby和应用函数时,一元数~:“float”的操作数类型错误

南门魁
2023-03-14

我在使用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

相关参考资料:

一元的操作数类型错误

一元的操作数类型错误

共有1个答案

周鸿运
2023-03-14

我认为std对于长度1的组,返回NaNs,因此使用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)的新手,我正在尝试制作一个可进行加法和除法运算的程序,以查找用户输入的平均值或均值,但我不知道如何添加数字接收。 当我在命令提示符下打开程序时,它接受我输入的数字,并且如果我使用打印功能,也将打印它,但不会将数字加起来。 我收到此错误: 我的代码如下: 任何帮助将不胜感激。 问题答案: 将输入作为字符串 您要告诉用户使用逗号分隔输入,因此需要