userid
列とitemid
列を使用して作成された多重指数を持つpandasデータフレームがあります。dfは次のようになります。
0 1 2
userid itemid
007 5000 9 4 3
007 4000 6 7 1
009 3000 1 2 3
インデックス[007、6000]がデータフレームdfに存在するかどうかを確認したいと思います。どうやってやるの。次のコードを実行すると、エラーが発生しますTypeError: unhashable type: 'list'
。
if [007, 6000] in df.index:
print('it works')
このため -
df
0 1 2
userid itemid
7 5000 9 4 3
4000 6 7 1
9 3000 1 2 3
df.index.values
array([(7, 5000), (7, 4000), (9, 3000)], dtype=object)
df.index.isin([(7, 5000)])
array([ True, False, False], dtype=bool)
これにより、その値を見つけることができるwhereに対応するマスクが得られます。存在するかどうかだけを知りたい場合は、 np.ndarray.any
isin
と組み合わせて。
df.index.isin([(7, 5000)]).any()
True
df.index.isin([(7, 6000)]).any()
False
使用する - Index.isin
:
df = df.index.isin([('007','5000')])
print (df)
[ True False False]