通过花式索引进行过滤后,将更改合并回pandas数据帧的最简单方法是什么?
例如,定义一个包含两列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
答案 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