階層インデックスの特定のレベルにあるいくつかの行の DataFrame エントリを変更したいと考えています。標準的な例を次に示します。
>>> index = pd.MultiIndex.from_arrays([['a','a', 'b', 'b'], [1,2,1,2]],
... names=['first', 'second'])
>>> data = pd.DataFrame(np.random.rand(len(index)), index=index, columns=['A'])
>>> print data
A
first second
a 1 0.587781
2 0.560407
b 1 0.492996
2 0.267799
行を 0 に設定したいと思いsecond==2
ます (たとえば)。メソッドを使用してみDataFrame.xs
ましたが、ビューではなくコピーを返します:
>>> selected = data.xs(2, level='second')
>>> print selected
A
first
a 0.560407
b 0.267799
>>> selected['A']=0
>>> print data
A
first second
a 1 0.587781
2 0.560407
b 1 0.492996
2 0.267799
最後の割り当ては影響しませんでしたdata
(もちろん値が変更されましたselected
)。