web-dev-qa-db-ja.com

pandasデータフレームはインデックスがマルチインデックスに存在するかどうかをチェックします

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')
6
user77005

このため -

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

df.index.isin([(7, 5000)])
array([ True, False, False], dtype=bool)

これにより、その値を見つけることができるwhereに対応するマスクが得られます。存在するかどうかだけを知りたい場合は、 np.ndarray.anyisinと組み合わせて。

df.index.isin([(7, 5000)]).any()
True

df.index.isin([(7, 6000)]).any()
False
5
cs95

使用する - Index.isin

df = df.index.isin([('007','5000')])
print (df)
[ True False False]
0
jezrael