要反转布尔系列,请使用
~s:
In [7]: s = pd.Series([True, True, False, True])In [8]: ~sOut[8]: 0 False1 False2 True3 Falsedtype: bool
使用Python2.7,NumPy 1.8.0,Pandas 0.13.1:
In [119]: s = pd.Series([True, True, False, True]*10000)In [10]: %timeit np.invert(s)10000 loops, best of 3: 91.8 µs per loopIn [11]: %timeit ~s10000 loops, best of 3: 73.5 µs per loopIn [12]: %timeit (-s)10000 loops, best of 3: 73.5 µs per loop
从Pandas
0.13.0开始,Series不再是
numpy.ndarray;的子类。它们现在是的子类
pd.NDframe。这可能与为什么
np.invert(s)不再像
~s或一样快有关
-s。
注意:
timeit结果可能取决于许多因素,包括硬件,编译器,操作系统,Python,NumPy和Pandas版本。



