Python 是否使用另一个系列的值覆盖(更新)一个系列?

Python 是否使用另一个系列的值覆盖(更新)一个系列?,python,pandas,Python,Pandas,我有两个熊猫系列:ser和ovr ser包含对象,ovr是对象和None的稀疏序列ser和ovr共享相同的索引,我想用其对应的ovr值覆盖ser的每个值,除非该对应值是None 实现这一点的有效方法是什么?(注意:此技术也适用于无) 首先查看不是NaN(或None)的s2值,这些值是您要更新s1的值: In [3]: s2[s2.notnull()] Out[3]: 0 7 1 2 2 3 dtype: float64 然后您可以使用以下内容更新s1的值: In [4]: s

我有两个熊猫系列:
ser
ovr

ser
包含对象,
ovr
是对象和
None
的稀疏
序列
ser
ovr
共享相同的索引,我想用其对应的
ovr
值覆盖
ser
的每个值,除非该对应值是
None

实现这一点的有效方法是什么?

(注意:此技术也适用于无)

首先查看不是NaN(或None)的s2值,这些值是您要更新s1的值:

In [3]: s2[s2.notnull()]
Out[3]:
0    7
1    2
2    3
dtype: float64
然后您可以使用以下内容更新s1的值:

In [4]: s1.update(s2[s2.notnull()])

In [5]: s1
Out[5]:
0     7
1     2
2     3
3     4
4     5
5   NaN
dtype: float64

谢谢这很有效。顺便说一句,为什么你会因为缺少值而推荐NaN而不是None,即使所讨论的
系列
是数据类型
对象
?@DunPeal@AndyHayden我确实需要这个问题的答案,但在谷歌上很久都找不到。我们可以编辑这个问题,去掉那些无关紧要的稀疏内容,把标题中的“覆盖”改为“替换”或“更新”吗?现在标题好多了!实际上比这更容易。您不需要清除
s2
中的空值。只需
s1。更新(s2)
即可。请参阅:“如果其他API包含NAN,则原始系列中的相应值不会更新。”(可能此API在过去7年中发生了更改!)
In [4]: s1.update(s2[s2.notnull()])

In [5]: s1
Out[5]:
0     7
1     2
2     3
3     4
4     5
5   NaN
dtype: float64