Python 数据帧合并/连接返回NaN

Python 数据帧合并/连接返回NaN,python,pandas,join,merge,Python,Pandas,Join,Merge,我有两个使用pandas创建的数据帧,我正试图合并它们以填充匹配“Tm”字段上的“W”列。当我合并时,新的列会出现在新的数据帧中,但有一半的值返回为“NaN” 我尝试了以下方法来合并df_1,并从results中添加“W”列 test = df_1.merge(result[['Tm', 'W']], on=['Tm'], how='left') df_1: 结果: 输出: 我已经检查了各栏,所有内容似乎都匹配。救命报答!谢谢。堪萨斯城酋长输出行包含NaN的原因 在W列中,看起来很明显:

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

我尝试了以下方法来合并
df_1
,并从
results
中添加“W”列

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

结果:

输出


我已经检查了各栏,所有内容似乎都匹配。救命报答!谢谢。

堪萨斯城酋长输出行包含NaN的原因 在W列中,看起来很明显:

  • df_1在这一行中只包含堪萨斯城的酋长
  • 但结果包含了堪萨斯城酋长的一行(2)
注意尾部(2)。这会导致这些行之间不匹配。 南部其他案件的原因可能是相同的

显然,您应该首先去掉这些尾随数字(和周围的数字)
然后执行合并。

您能确认合并后有NaN的团队在结果数据框中确实有记录吗?因为您的合并看起来很好。为什么在
结果
中有“巴尔的摩乌鸦(1)”,而在
输出
中只有“巴尔的摩乌鸦”?由于这是一个左合并,您是否检查了右表“结果”中是否也存在该值?您正在合并团队名称,即字符串。两个dfs中的数据是否来自同一个源?您是否进行了质量检查并清理了数据?可能在名称字符串中存在不容易看到的差异,或者bernie指出的更明显的差异。内部连接可能是检查是否存在任何隐藏差异的一种方法。除了一些其他评论者提出的好问题外,请在文章本身中以文本形式而不是图像形式共享代码/数据!见: