DataFrameでマルチレベル列を選択しようとしています。整数位置によるマルチレベル列のインデックスまたはスライス
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(6, 6), index=index[:6], columns=index[:6])
出力:たとえば
first bar baz foo
second one two one two one two
first second
bar one 1.031494 -1.115284 -0.154907 0.044911 2.443488 -0.534575
two -0.236643 1.547236 2.132647 0.366896 -0.710489 -0.478956
baz one -0.365648 1.517573 0.668234 0.408448 -0.427475 -1.205160
two 1.362631 -0.785439 1.549837 -0.693337 0.610976 -1.989460
foo one -0.449393 0.195214 1.120589 0.413219 -0.820709 0.349553
two -1.128392 -0.590630 0.559310 -0.225504 1.721240 1.326330
私は今、選択レベルは、このような0 == 'bar' にすることができます
df.loc[:,slice("bar")]
私に与える:
first bar
second one two
first second
bar one 1.031494 -1.115284
two -0.236643 1.547236
baz one -0.365648 1.517573
two 1.362631 -0.785439
foo one -0.449393 0.195214
two -1.128392 -0.590630
を
これはdf.loc[:,slice(df.columns.levels[0][0])]
でも動作し、同じ結果。
私の質問:上記の出力は得られますが、列 'bar'の整数位置を使用できますか?だから、代わりに:
df.loc[:,slice("bar")]
私が使用したい:
df.loc[:,slice(0)]
とつまり、まったく同じ出力を得る:私がしなければ、
first bar
second one two
first second
bar one 1.031494 -1.115284
two -0.236643 1.547236
baz one -0.365648 1.517573
two 1.362631 -0.785439
foo one -0.449393 0.195214
two -1.128392 -0.590630
さらに:
df.loc[:,(slice(0), slice(0))]
取得したい:"レベル0 == 0(または"バー ")とレベル1 == 0(または" 1 ")の列を教えてください。
df.loc[:,(slice("bar"), slice("one"))]
を使用してこの結果を達成できましたが、代わりに整数を使用したいと思います。