Python 用不同长度序列中的值替换数据帧中的值

Python 用不同长度序列中的值替换数据帧中的值,python,pandas,numpy,Python,Pandas,Numpy,我想用序列中的值替换数据帧列中的值。问题是,我只想替换由掩码指定的值,并且序列的长度与数据帧的长度不同 更具体地说,我想用数据帧中每个非空值对应一个值的序列中的值替换所有非空值 假设数据帧中的列包含[1,2,3,NaN,5],序列包含[2,4,6,10] 我天真地认为这可能管用 df[pd.notna(df)] = s 但它会使列看起来像[1,2,3,NaN,NaN]。我理解它为什么会这样,但我需要找到一些东西来告诉我:[2,4,6,NaN,10]您尝试过的方法是可能的,但有一些变化

我想用序列中的值替换数据帧列中的值。问题是,我只想替换由掩码指定的值,并且序列的长度与数据帧的长度不同

更具体地说,我想用数据帧中每个非空值对应一个值的序列中的值替换所有非空值

假设数据帧中的列包含
[1,2,3,NaN,5]
,序列包含
[2,4,6,10]

我天真地认为这可能管用

    df[pd.notna(df)] = s 

但它会使列看起来像
[1,2,3,NaN,NaN]
。我理解它为什么会这样,但我需要找到一些东西来告诉我:
[2,4,6,NaN,10]

您尝试过的方法是可能的,但有一些变化:

  • 更新一些单独的列,而不是整个数据帧
  • 要从不同的索引值中“转义”,请从 “更新”系列
为了演示如何执行此操作,让我们将数据帧(df)定义为:

“更新”系列(upd)为:

如您所见,df和upd中的索引是不同的

要按所需方式更新df中的列,请运行:

df.A[df.A.notna()] = upd.values
结果是:

      A     B
0   2.0  11.0
1   4.0  12.0
2   6.0  13.0
3   NaN   NaN
4  10.0  15.0

这两个系列有相同的索引吗?它们没有相同的索引。谢谢。在编写q时,访问整个数据帧只是一个错误。价值观提示是什么是伟大的。
df.A[df.A.notna()] = upd.values
      A     B
0   2.0  11.0
1   4.0  12.0
2   6.0  13.0
3   NaN   NaN
4  10.0  15.0