2次元(またはそれ以上)pandas DataFrameは次のようになります。
_>>> import pandas as pd
>>> df = pd.DataFrame([[0,1],[2,3],[4,5]], columns=['A', 'B'])
>>> df
A B
0 0 1
1 2 3
2 4 5
_
np.array([2,3])
のようなnumpy配列があり、df
に配列の内容と一致する行があるかどうかを確認したいとします。ここでは、答えは明らかに正しいはずですが、たとえばnp.array([1,2])
は、列Aに1と列Bに2の両方を持つ行がないため、falseを返す必要があります。
確かにこれは簡単ですが、今は表示されません。
それは本当に簡単であることが判明しました、次はここで仕事をします:
>>> ((df['A'] == 2) & (df['B'] == 3)).any()
True
>>> ((df['A'] == 1) & (df['B'] == 2)).any()
False
誰かが、配列と列のリストを直接渡すことができるより良い解決策を思いつくかもしれません。
df['A'] == 2
演算子は&
演算子と同様に強力にバインドするため、==
を囲む括弧はオプションではありません。
より簡単な方法は次のとおりです。
a = np.array([2,3])
(df == a).all(1).any()
一致が発生したインデックスも返したい場合:
index_list = df[(df['A'] == 2)&(df['B'] == 3)].index.tolist()