我想在层次索引的特定级别修改某些行的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
我想将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 :(得分:4)
最近版本的pandas help(data.xs)
显示了如何获取数据视图。
可以使用xs arg copy=False
。