Python
pandas

DataFrame で複数列インデックスで検索する方法

df = pd.DataFrame({
    'A': ['a', 'b', 'c'],
    'B': ['x', 'y', 'z'],
    'C': [1, 2, 3],
}).set_index(['A', 'B'])

#       C
#  A B
#  - -  -
#  a x  1
#  b y  2
#  c z  3

これからインデックス A='b' and B='y' の値を取り出す方法:

df.loc[[('b', 'y')]]

#       C
#  A B
#  - -  -
#  b y  2

.loc[[インデックス]] と指定することで、該当行が取れる。
インデックスが複数列の場合は ('b', 'y') のようにタプルで指定することになる。

ちなみに .loc[[インデックス1, インデックス2, ...]] のようにカンマ区切りで指定すれば行を複数取れる。

df.loc[[('a', 'x'), ('b', 'y')]]

#       C
#  A B
#  - -  -
#  a x  1
#  b y  2