<p>一般来说,每当遇到这种情况时,您都希望<strong>考虑避免循环和迭代,而是执行<strong>合并</strong>。然后</strong>然后</strong>根据需要对数据进行处理。例如,温家宝的解决方案就是最恰当的方法</p>
<p>不过,我要补充几点。下面是我的两个DF:</p>
<p><a href="https://i.stack.imgur.com/2Xdlp.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2Xdlp.png" alt="NOCITY DF"/></a></p>
<p><a href="https://i.stack.imgur.com/5KFWl.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5KFWl.png" alt="WITHCITY DF"/></a></p>
<p>让我们分别调用第一个和第二个dfs,<strong>nocity和withcity</p>
<p>你想做:</p>
<pre><code>nocity.merge(withcity, on='business_id', how='left')
</code></pre>
<p>然而,如果你最终得到了文在上文中提到的nan值<strong>检查钥匙的数据类型</strong></p>
<p>也就是说,如果nocity中的business\u id字段是int(出于某种原因),而withcity中的business\u id字段是str,那么Pandas在合并数据帧时会遇到问题,您会得到NaN值,而不是所需的城市名称</p>
<p>检查一下你会做什么</p>
<pre><code>#for all datatypes in the nocity df
print(nocity.dtypes)
#or just for the field's dtypes
print(nocity.business_id.dtypes)
</code></pre>
<p>如果它们不同的话,你可以转换成一个普通的数据类型,比如str</p>
<pre><code>#example conversion of pandas column (series) to different datatype
nocity.business_id = nocity.business_id.astype(str)
withcity.business_id = withcity.business_id.astype(str)
#then perform merge as usual
nocity = nocity.merge(withcity, on='business_id', how='left')
</code></pre>
<p><a href="https://i.stack.imgur.com/lQuSq.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/lQuSq.png" alt="Merge Results"/></a></p>
<p>希望这有帮助。如果你喜欢的话,也别忘了把你的名字从city改成cityname</p>
<pre><code>nocity.rename(columns = {'city': 'city name'})
</code></pre>