1. ホーム
  2. パイソン

[解決済み】pandas Seriesの要素ごとの論理NOTを取得するにはどうすればよいですか?

2022-03-31 10:50:24

質問

私は、パンダの Series オブジェクトに含まれるブーリアン値です。どのようにすれば論理的な NOT の各値を教えてください。

例えば、以下を含むシリーズを考える。

True
True
True
False

手に入れたいシリーズが含まれる。

False
False
False
True

これはとても簡単なことのように思えるのですが、どうやら私は自分の力を見失ってしまったようです =(

解決方法は?

論理系列を反転させる。 使用 ~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、NumPy1.8.0、Pandas0.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のバージョンなど多くの要因によって異なる可能性があります。