在通过花哨的索引过滤后,将更改合并回pandas数据帧的最简单方法是什么?
例如,定义一个包含两列x和y的dataframe,并选择x为偶数整数的所有行,然后将y中的相应值设置为0。
d = pd.DataFrame({'x':range(10), 'y':range(11,21)})
d[d.x % 2 == 0]['y'] = 0
“奇特的索引”布尔查询复制了数据帧,因此更改永远不会传播回原始数据帧。有没有更好的方法来执行这个操作?
我目前的解决方案是定义一个临时的dataframe w,基于花哨的布尔索引,将'y‘中的相应值设置为w中的0,然后使用索引将w合并回d。必须有一种更有效的(希望是更直接的)方法来做这件事:
w = d[d.x % 2 == 0]
w.y = 0
发布于 2013-01-13 01:02:22
使用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
https://stackoverflow.com/questions/14295531
复制相似问题