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

时间:2014-08-27 00:32:16

标签: python pandas

我有一个系列,(称之为x),它是根据以下逻辑生成的:

  1. 从y中提取x(x是y的子集,都是系列)
  2. 对x
  3. 的元素执行许多操作

    现在我要做的就是将x的元素(现在不同的值)放回到它们来自的位置

    具体来说,这是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中。因此,例如,当我完成时,与index = 2(当前为0.195750)相关联的y值将被替换为与index = 2(0.026610)相关联的x值。

    当然,我可以蛮力,但寻找更好的方法。

    条件列表理解确实至少把事情放在了正确的位置,如下所示:

    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)
    

    能做到这一点。我只是想知道是否有一些内置的熊猫魔法可以让我更干净和/或更简单 - 直接进入系列赛。好像一定有​​这样的事情。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

update怎么样?请注意,与许多其他pandas方法不同,它可以在适当的位置运行。

y.update(x)