2
「AND」を使用して異なる条件を連鎖させて選択すると、選択範囲がきれいになります。 「OR」で連鎖条件を選択すると、選択によってエラーが発生します。パンダ複数の条件でまたはステートメントを使用してスライシング/選択
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame([[1,4,3],[2,3,5],[4,5,6],[3,2,5]],
... columns=['a', 'b', 'c'])
>>> df
a b c
0 1 4 3
1 2 3 5
2 4 5 6
3 3 2 5
>>> df.loc[(df.a != 1) & (df.b < 5)]
a b c
1 2 3 5
3 3 2 5
>>> df.loc[(df.a != 1) or (df.b < 5)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 731, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
すべての行がこの条件を満たしているので、データフレーム全体を返すことが期待されます。
そしてここで 'loc'を省略することができ、それは純粋な['ブールindexing'](http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing)です。 'loc'は' df.loc [(df.a!= 1)]のようないくつかの列を選択する必要がある場合に使用されます。 (df.b <5)、 'a'] 'または' df.loc [(df.a!= 1)| (df.b <5)、['a'、 'b']] ' – jezrael
とbtw素敵な答え;) – jezrael