1. ホーム
  2. python

[解決済み] pandas dataframe selects columns in multiindex [duplicate] (パンダ データフレーム セレクト カラムズ インデックス)

2023-05-23 03:57:26

質問

以下のpd.DataFrameがあります。

Name    0                       1                      ...
Col     A           B           A            B         ...
0       0.409511    -0.537108   -0.355529    0.212134  ...
1       -0.332276   -1.087013    0.083684    0.529002  ...
2       1.138159    -0.327212    0.570834    2.337718  ...

MultiIndexカラムを持ち names=['Name', 'Col'] と階層的なレベルを持つ。その Name ラベルは0からnまであり、各ラベルに対して2つの AB のカラムがあります。

をすべてサブセレクトしたいのですが A (または B ) のカラムを指定します。

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

あるのは get_level_values メソッドがあり、これをブーリアンインデックスと組み合わせて使うことで、意図した結果を得ることができます。

In [13]:

df = pd.DataFrame(np.random.random((4,4)))
df.columns = pd.MultiIndex.from_product([[1,2],['A','B']])
print df
          1                   2          
          A         B         A         B
0  0.543980  0.628078  0.756941  0.698824
1  0.633005  0.089604  0.198510  0.783556
2  0.662391  0.541182  0.544060  0.059381
3  0.841242  0.634603  0.815334  0.848120
In [14]:

print df.iloc[:, df.columns.get_level_values(1)=='A']
          1         2
          A         A
0  0.543980  0.756941
1  0.633005  0.198510
2  0.662391  0.544060
3  0.841242  0.815334