ในการสลับกลับบูลีนซีรีส์ให้ใช้~s
:
In [7]: s = pd.Series([True, True, False, True])
In [8]: ~s
Out[8]:
0 False
1 False
2 True
3 False
dtype: 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 loop
In [11]: %timeit ~s
10000 loops, best of 3: 73.5 µs per loop
In [12]: %timeit (-s)
10000 loops, best of 3: 73.5 µs per loop
ตั้งแต่ Pandas 0.13.0 ซีรี่ย์ไม่เป็นคลาสย่อยอีกต่อไปของnumpy.ndarray
; pd.NDFrame
ตอนนี้พวกเขาคลาสย่อย นี้อาจมีสิ่งที่จะทำอย่างไรกับเหตุผลที่np.invert(s)
จะไม่เป็นอย่างรวดเร็วหรือ~s
-s
ข้อแม้: timeit
ผลลัพธ์อาจแตกต่างกันไปขึ้นอยู่กับปัจจัยหลายประการรวมถึงรุ่นของฮาร์ดแวร์คอมไพเลอร์ OS, Python, NumPy และ Pandas
object
ประเภทสำหรับคำตอบด้านล่างเพื่อใช้งาน:~ df.astype('bool')