1. ホーム
  2. python

[解決済み] 複数インデックスからの選択 Pandas

2022-09-08 15:28:02

質問

列 'A' と 'B' を持つマルチインデックスデータフレームを持っています。

インデックスを1列のインデックスにリセットすることなく、マルチインデックスの1列でフィルタリングして行を選択する方法はありますか?

例として

# has multi-index (A,B)
df
#can I do this? I know this doesn't work because the index is multi-index so I need to     specify a tuple

df.ix[df.A ==1]

どのように解決するのですか?

一つの方法として get_level_values インデックスメソッドです。

In [11]: df
Out[11]:
     0
A B
1 4  1
2 5  2
3 6  3

In [12]: df.iloc[df.index.get_level_values('A') == 1]
Out[12]:
     0
A B
1 4  1

0.13では、以下のように xsdrop_level 引数 :

df.xs(1, level='A', drop_level=False) # axis=1 if columns

注:もしこれがインデックスではなくカラムMultiIndexであれば、同じテクニックを使うことができます。

In [21]: df1 = df.T

In [22]: df1.iloc[:, df1.columns.get_level_values('A') == 1]
Out[22]:
A  1
B  4
0  1