熊猫数据框检查索引是否在多索引中

use*_*005 5 python multi-index dataframe pandas

我有一个Pandas Dataframe,它具有使用列userid和创建的多重索引itemid。df看起来像这样

                  0     1     2
userid  itemid
007     5000      9     4     3
007     4000      6     7     1
009     3000      1     2     3
Run Code Online (Sandbox Code Playgroud)

我想检查数据帧df中是否存在索引[007,6000]。我怎样才能做到这一点。如果我运行以下代码,将出现错误TypeError: unhashable type: 'list'

if [007, 6000] in df.index:
    print('it works')
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 5

为了这 -

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)
Run Code Online (Sandbox Code Playgroud)

您可以使用df.index.isin

df.index.isin([(7, 5000)])
array([ True, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

这为您提供了一个与可以找到该值的位置相对应的掩码。如果您只是想知道它是否存在np.ndarray.any,请与结合使用isin

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

df.index.isin([(7, 6000)]).any()
False
Run Code Online (Sandbox Code Playgroud)


jez*_*ael 5

使用Index.isin

df = df.index.isin([('007','5000')])
print (df)
[ True False False]
Run Code Online (Sandbox Code Playgroud)