【问题标题】:Pandas dataframe merge/join returns NaN [closed]Pandas 数据框合并/连接返回 NaN [关闭]
【发布时间】:2020-01-05 03:18:48
【问题描述】:

我有两个使用 pandas 创建的数据框,我试图合并它们以填充匹配的“Tm”字段上的“W”列。当我合并时,新列会出现在新数据框中,但一半的值返回为“NaN”。

我尝试了以下合并 df_1 并从 results 添加“W”列。

test = df_1.merge(result[['Tm', 'W']], on=['Tm'], how='left')

df_1:

结果:

输出

我检查了列,一切似乎都匹配。帮助赞赏!谢谢。

【问题讨论】:

  • 您能否确认合并后对他们有 NaN 的团队实际上在结果数据框中有记录?因为你的合并看起来不错。
  • 为什么result 中有“Baltimore Ravens (1)”,而output 中只有“Baltimore Ravens”?
  • 由于这是左合并,您是否检查过该值是否也存在于右表“结果”中
  • 您正在合并团队名称,即字符串。两个dfs中的数据是否来自同一来源?您是否进行了质量检查并清理了数据?名称字符串中可能存在不易看到的差异,或者 bernie 指出的更明显的差异。内连接可能是检查是否存在任何隐藏差异的一种方法。
  • 除了其他一些评论者提出的好问题之外,请在帖子本身中以文本而不是图像的形式分享代码/数据!见:meta.stackoverflow.com/q/303812/11301900

标签: python pandas join merge


【解决方案1】:

Kansas City Chiefs 的输出行包含 NaN 的原因 在 W 列中看起来很明显:

  • df_1 在这一行中仅包含 堪萨斯城酋长队
  • result 包含 堪萨斯城酋长队 (2) 行。

注意尾随的(2)。它导致这些行之间没有匹配。 NaN 上其他情况的原因大概是一样的。

显然你应该首先摆脱这些尾随数字(以及周围的 括号和它们前面的空格),然后执行合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2020-05-24
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多