【问题标题】:How to keep all values from a dataframe except where NaN is present in another dataframe?除了 NaN 存在于另一个数据框中,如何保留数据框中的所有值?
【发布时间】:2021-10-07 13:04:43
【问题描述】:

我是 Pandas 的新手,我被困在这个特定的问题上,我在 Pandas 中有 2 个 DataFrame,例如

>>> 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 的值。

【问题讨论】:

  • 请使用df.to_dict() 并在此处发布输出,以便我们重现您的df
  • @Luke 你可以在复制问题中的df后pd.read_clipboard

标签: pandas dataframe nan


【解决方案1】:

您可以通过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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2022-11-15
    • 1970-01-01
    • 2019-08-14
    • 2017-10-19
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多