Python: 根据索引替换修改后的Pandas系列元素

0 投票
1 回答
527 浏览
提问于 2025-04-18 18:39

我有一个序列(我们叫它x),它是根据以下逻辑生成的:

  1. 从y中提取x(x是y的一个子集,两个都是序列)
  2. 对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)

撰写回答