运行此行后,出现以下错误: TypeError:输入类型不支持ufunc'isfinite',并且根据强制转换规则“ safe”不能将输入安全地强制转换为任何受支持的类型
df[~( (pd.np.isclose(df.Sizes.round(3), df.Volumes)) & (df['color'] == 'Blue') )]
我该如何解决?
答案 0 :(得分:0)
In [152]: df=pd.DataFrame(np.arange(12.).reshape(4,3), columns=['one','two','three'])
In [153]: df.three[:] = ['a',np.nan,4,3.2]
In [154]: df
Out[154]:
one two three
0 0.0 1.0 a
1 3.0 4.0 nan
2 6.0 7.0 4
3 9.0 10.0 3.2
In [155]: pd.np.isclose(df.one.round(3), df.two)
Out[155]: array([False, False, False, False])
In [156]: pd.np.isclose(df.one.round(3), df.three)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-156-d99a19b1d9b5> in <module>
----> 1 pd.np.isclose(df.one.round(3), df.three)
/usr/local/lib/python3.6/dist-packages/numpy/core/numeric.py in isclose(a, b, rtol, atol, equal_nan)
2520
2521 xfin = isfinite(x)
-> 2522 yfin = isfinite(y)
2523 if all(xfin) and all(yfin):
2524 return within_tol(x, y, atol, rtol)
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
在两个float32
列上的测试有效,但是当一列是具有非数字值的对象dtype时,会引发此错误。