<p>错误的意思是,您正在浮点值上使用按位一元运算符<code>~</code>,而它不支持浮点值</p>
<p>在这种情况下,该浮点值可能是一个<code>NaN</code>值</p>
<p>您确定数据源(csv文件)没有更改吗</p>
<p>我用这个做了测试</p>
<pre class="lang-py prettyprint-override"><code>In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: s1 = pd.Series(['Mouse', 'dog', 'house and parrot', '23', np.NaN])
In [4]: s1.str.contains('og')
Out[4]:
0 False
1 True
2 False
3 False
4 NaN
dtype: object
In [5]: ~s1.str.contains('og', regex=False)
-
TypeError Traceback (most recent call last)
<ipython-input-5-9be2b1fdd8c9> in <module>
> 1 ~s1.str.contains('og', regex=False)
~/tmp/test/venv/lib/python3.7/site-packages/pandas/core/generic.py in __invert__(self)
1539 def __invert__(self):
1540 try:
-> 1541 arr = operator.inv(com.values_from_object(self))
1542 return self.__array_wrap__(arr)
1543 except Exception:
TypeError: bad operand type for unary ~: 'float'
In [6]: s1 = pd.Series(['Mouse', 'dog', 'house and parrot', '23'])
In [7]: ~s1.str.contains('og', regex=False)
Out[7]:
0 True
1 False
2 True
3 True
dtype: bool
In [8]:
</code></pre>
<p>请注意,当我在系列中使用<code>np.NaN</code>时,我得到了与您相同的错误,但是当我删除它时,它就工作了</p>
<p>所以是的,你的代码很好,你的数据源改变了</p>