运行此行后,我收到以下错误:
类型错误:输入类型不支持 ufunc 'isfinite',并且无法根据转换规则 ''safe'' 将输入安全地强制转换为任何受支持的类型
df[~( (pd.np.isclose(df.Sizes.round(3), df.Volumes)) & (df['color'] == 'Blue') )]
我该如何解决?
最佳答案
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 时会引发此错误。
关于python-3.x - TypeError : ufunc 'isfinite' not supported for the input types, 并且输入无法安全地强制转换为任何支持的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207108/