2013-01-12 87 views
4

通过花式索引过滤后,将更改合并回熊猫数据框的最简单方法是什么?熊猫花式索引和合并

例如,定义具有两列x和y一个数据帧,并选择所有的行,其中x是偶整数,然后设置在y中的相应的值为0。

d = pd.DataFrame({'x':range(10), 'y':range(11,21)}) 
d[d.x % 2 == 0]['y'] = 0 

的“花式索引“布尔查询会生成数据帧的副本,所以更改不会传播回原始数据帧。有没有更好的执行此操作?

我目前的解决方案是基于花式布尔索引定义临时数据框w,在w中将'y'中相应的值设置为0,然后使用索引将w合并回d。必须有这样做的更有效的(希望更直接)的方式:

w = d[d.x % 2 == 0] 
w.y = 0 

回答

3

使用DataFrame.ix []:

In [21]: d 
Out[21]: 
    x y 
0 0 11 
1 1 12 
2 2 13 

In [22]: d.ix[d.x % 2 == 0, 'y'] = -5 

In [23]: d 
Out[23]: 
    x y 
0 0 -5 
1 1 12 
2 2 -5