2017-12-26 5 views
1

私の質問は、このトピックの論理的な続きです。 Setting values with multiindex in pandasしたがって、この例と答えは私の状況にも合っています。マルチレベルインデックスの設定値は1レベルのインデックスのみを使用して

彼らは​​

とマルチインデックス値を設定する。しかし、私の場合には、 iは、多くのインデックス・レベルのカスタム番号のデータフレームのを持っているので、私は指定せず、唯一の最後のレベルにインデックスを使用したいです他のもの - f.loc[:::, "one"), 0] = 1のようなもの。 P.P.また、私はIndexer列 "1"を持っている場合、私はそれを使用することができますか? array([ True, True, True, ..., True, True, True], dtype=bool)

答えて

1

IIUCあなたがpd.IndexSliceを使用したい::maskを使用して

In [276]: df 
Out[276]: 
        0   1 
first second 
bar one  0.414213 -0.316333 
     two  1.109279 0.307283 
baz one -0.287986 -1.963492 
     two  0.858867 0.553895 
foo one -0.152813 -2.489409 
     two  1.022960 0.377656 
qux one  1.549389 -0.307250 
     two -1.150914 -3.517356 

In [277]: df.loc[pd.IndexSlice[:,'one'], 0] = 1 

In [278]: df 
Out[278]: 
        0   1 
first second 
bar one  1.000000 -0.316333 
     two  1.109279 0.307283 
baz one  1.000000 -1.963492 
     two  0.858867 0.553895 
foo one  1.000000 -2.489409 
     two  1.022960 0.377656 
qux one  1.000000 -0.307250 
     two -1.150914 -3.517356 

ブールインデックス:

In [291]: mask = (df[0] > 1).values 

In [292]: mask 
Out[292]: array([False, True, False, False, False, True, False, False], dtype=bool) 

In [293]: df.loc[mask] 
Out[293]: 
        0   1 
first second 
bar two  1.109279 0.307283 
foo two  1.022960 0.377656 

In [294]: df.iloc[mask] 
Out[294]: 
        0   1 
first second 
bar two  1.109279 0.307283 
foo two  1.022960 0.377656 

In [295]: df[mask] 
Out[295]: 
        0   1 
first second 
bar two  1.109279 0.307283 
foo two  1.022960 0.377656 
+0

おかげ インデクサは、配列にすることができます。 'P.S.'の情報を追加してください。 –

+0

@LadenkovVladislav、申し訳ありませんが、私はそのことを理解していません。部。あなたの 'Indexer'とは何ですか?それをどのように使いたいのですか? – MaxU

+0

それは単なるマスクです。たとえば、 'array([True、True、True、...、True、True、True]、dtype = bool)' –

関連する問題