【发布时间】:2019-07-11 21:39:52
【问题描述】:
我在使用 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)
我已经过滤了 price 列中的 NaN 行:df = df[np.isfinite(df['price'])],我应该怎么做才能让它正确返回?感谢您提前提供帮助。
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'].describe()得到的,看起来很正常。
count 10755.000000
mean 7.135314
std 3.844756
min 1.000000
25% 4.700000
50% 6.000000
75% 8.500000
max 49.000000
相关参考:
【问题讨论】: