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
4

1 回答 1

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
于 2013-01-12T17:02:22.113 回答