5
たとえば、私はdocumentationから取った、次のようなマルチインデックスのパンダデータフレームを持っています。MultiIndexを使用したPandasデータフレーム:文字列がインデックスレベルに含まれているかどうか確認してください
次のようになりますimport numpy as np
import pandas as pd
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
:
0 1 2 3
bar one -0.096648 -0.080298 0.859359 -0.030288
two 0.043107 -0.431791 1.923893 -1.544845
baz one 0.639951 -0.008833 -0.227000 0.042315
two 0.705281 0.446257 -1.108522 0.471676
foo one -0.579483 -2.261138 -0.826789 1.543524
two -0.358526 1.416211 1.589617 0.284130
qux one 0.498149 -0.296404 0.127512 -0.224526
two -0.286687 -0.040473 1.443701 1.025008
は今、私は唯一の「NE」はマルチインデックスの第二のレベルに含まれている行をしたいです。
(部分的に)含まれている文字列に対してマルチインデックスをスライスする方法はありますか?
2つのレベルにマスクを適用することもできますか?私はすでにdf = df.iloc [df.index.get_level_values(0).str.contains( 'ba')、 df.index.get_level_values(1).str.contains( 'ne')] を試しましたが、これは動作しません。 –
あなたは 'df = df.iloc [(df.index.get_level_values(0).str.contains( 'ba'))のようなブールマスクを使うことができると思います。 (df.index.get_level_values(1).str.contains( 'ne'))] '。 ORまたはANDは、必要なものによって異なります。 –