ブール値を含むpandas オブジェクトがありますSeries
。各値の論理を含むシリーズを取得するにはどうすればよいでしょうかNOT
?
たとえば、次の内容を含むシリーズを考えてみましょう。
True
True
True
False
私が入手したいシリーズには以下のものが含まれます:
False
False
False
True
これはかなり簡単なように思えますが、どうやら私は自分のモジョを失ってしまったようです =(
ベストアンサー1
ブールシリーズを反転するには、使用~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 以降、Series は のサブクラスではなくなりnumpy.ndarray
、 のサブクラスになりました。これは、がや ほど高速ではなくなったpd.NDFrame
理由と関係があるかもしれません。np.invert(s)
~s
-s
注意:timeit
結果は、ハードウェア、コンパイラ、OS、Python、NumPy、Pandas のバージョンなど、多くの要因によって異なる場合があります。