Python: 根据索引替换修改后的Pandas系列元素
我有一个序列(我们叫它x),它是根据以下逻辑生成的:
- 从y中提取x(x是y的一个子集,两个都是序列)
- 对x中的元素进行一些操作
现在我想把x中的元素(现在的值不同了)放回它们在y中的位置。
具体来说,这里是x和y的(一个子集)样子:
>>> x
2 0.026610
5 0.128612
8 -0.208833
11 -0.148410
14 -0.110574
17 0.187002
>>> y
0 0.259825
1 0.171325
2 0.195750
3 0.290775
4 0.319075
5 0.278700
6 -0.036125
7 0.102525
8 -0.044000
9 -0.539275
10 -0.573875
11 -0.008500
12 0.141325
13 0.186975
14 0.074875
15 0.079925
16 0.224075
17 0.358475
18 -0.107125
我想做的是根据索引把x中的元素重新插入到y中。比如说,当我完成后,索引为2的y值(现在是0.195750)会被索引为2的x值(0.026610)替换掉。
当然,我可以用蛮力的方法来实现这个,但我在寻找更好的方法。
使用条件列表推导至少可以把东西放到正确的位置,像这样:
z = [y[i] if y.index[i] not in x.index else x[i] for i in range(len(y))]
但是如果我这样做了,现在我得到的是一个列表,还得把它转换回序列,并应用y的索引。
zS = pd.Series(z, index = y.index)
我可以这样做。我只是想知道是否有一些内置的Pandas魔法,可以让我更干净和简单地直接得到一个序列。感觉应该有这样的东西。
提前谢谢你。
1 个回答
1
关于 update
方法,有一点需要注意:它和很多其他的 pandas 方法不一样,它是直接在原来的数据上进行操作的。
y.update(x)