【问题标题】:How to combine two dataframes (same shape, including NaN)?如何组合两个数据框(相同的形状,包括 NaN)?
【发布时间】:2021-05-28 08:07:09
【问题描述】:

我想结合df1df2得到df3

df1df2 将具有完全相同的 indexcolumn(形状相同),包括一些 np.NaN。它们不会有重叠的值(没有歧义)。如果它存在于任何一个中,则取值。

最直接的方法是什么?

df1 = pd.DataFrame({'A': [1.0, np.NaN], 'B':[np.NaN, np.NaN]})
df2 = pd.DataFrame({'A': [np.NaN, np.NaN], 'B':[np.NaN, 0.0]})
df3 = pd.DataFrame({'A': [1.0, np.NaN], 'B':[np.NaN, 0.0]})

我尝试过df1 + df2df1 | df2,并查看了merge(),但没有运气。

提前致谢。

编辑

假设我先执行replace(0,magicNumber),然后执行replace(np.NaN, 0)。然后我可以添加两个数据框,然后执行replace(magicNumber, 0)。但这是非常丑陋、令人困惑的代码。如果有更清洁、泛泛/pythonic 的解决方案,请告诉我。谢谢。

【问题讨论】:

  • 你可能想看看这个帖子Pandas join/merge/concat two dataframes
  • @SidKwakkel 谢谢,但与我遇到的问题不同。
  • @kfmfe04 让我知道是否需要进一步澄清。如果可以,请考虑接受答案。谢谢!

标签: python dataframe merge nan


【解决方案1】:

使用:df3 = df1.combine_first(df2)

见文档here

【讨论】:

  • 太棒了!似乎工作得很好。我会让这篇文章搁置一两天,然后接受。泰。
猜你喜欢
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2023-04-09
  • 2021-11-11
  • 2020-04-04
  • 1970-01-01
相关资源
最近更新 更多