Để đảo ngược một chuỗi boolean, sử dụng~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
Sử dụng 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
Kể từ Pandas 0.13.0, Series không còn là lớp con của numpy.ndarray
; bây giờ chúng là các lớp con của pd.NDFrame
. Điều này có thể có liên quan đến lý do tại sao np.invert(s)
không còn nhanh như ~s
hoặc -s
.
Hãy cẩn thận: timeit
kết quả có thể thay đổi tùy thuộc vào nhiều yếu tố bao gồm các phiên bản phần cứng, trình biên dịch, hệ điều hành, Python, NumPy và Pandas.
object
loại để các câu trả lời bên dưới hoạt động, vì vậy hãy sử dụng:~ df.astype('bool')