除了 NaN 出现在另一个数据框中之外,如何保留数据框中的所有值?

How to keep all values from a dataframe except where NaN is present in another dataframe?

我是 Pandas 的新手,我遇到了这个特定问题,我在 Pandas 中有 2 个数据帧,例如

>>> df1
      A   B
0     1   9
1     2   6
2     3   11
3     4   8

>>> df2
      A   B
0     Nan   0.05
1     Nan   0.05
2     0.16   Nan
3     0.16   Nan

我想要实现的是保留 df1 中的所有值,除了 df2 中有 NaN 的地方,即

>>> df3
      A     B
0     Nan   9
1     Nan   6
2     3   Nan
3     4   Nan

我说的是每行 10,000 行的 dfs,所以我无法手动执行此操作。在每种情况下,索引和列也完全相同。我在 df1 中也没有 NaN 值。 据我了解 df.update() 将覆盖所有值,包括 NaN 或仅更新那些 NaN.

您可以使用 布尔掩码 使用 DataFrame.notna

# df2 = df2.astype(float) # This needed if your dtypes are not floats.
m = df2.notna()
df1[m]
     A    B
0  NaN  9.0
1  NaN  6.0
2  3.0  NaN
3  4.0  NaN