3
我想修改層次索引的特定級別上某些行的DataFrame條目。下面是一個典型的例子:pandas:不帶副本的分層索引上的片段
>>> 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
我想設置爲其second==2
爲0(例如)行。我試着用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
變更值)。
感謝您的建議。它似乎與單級索引一起工作良好,但它不適用於多索引。我的熊貓版本是0.9.0 – btel
似乎是一個問題,我爲它打開了一個問題https://github.com/pydata/pandas/issues/2117 –
感謝您的報告。有沒有解決之前我可以申請的工作? – btel