回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有两个数据帧,其中一个对另一个中的某些(但不是全部)行有补充信息。</p>
<pre><code>names = df({'names':['bob','frank','james','tim','ricardo','mike','mark','joan','joe'],
'position':['dev','dev','dev','sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank'],
'classification':['thief','thief','good','thief']})
</code></pre>
<p>我想从上面的<code>info</code>数据框中获取分类列,并将其添加到上面的<code>names</code>数据框中。但是,当我执行<code>combined = pd.merge(names, info)</code>时,生成的数据帧只有4行长。将删除所有没有补充信息的行。</p>
<p>理想情况下,我会将那些缺少的列中的值设置为unknown。结果产生了一个数据帧,其中一些人是他们的,一些人是好的,而其他人是未知的。</p>
<p>编辑:
我得到的第一个答案之一是建议使用merge outter,它似乎做了一些奇怪的事情。下面是代码示例:</p>
<pre><code>names = df({'names':['bob','frank','bob','bob','bob''james','tim','ricardo','mike','mark','joan','joe'],
'position':['dev','dev','dev','dev','dev','dev''sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank','joe','bill'],
'classification':['thief','thief','good','thief','good','thief']})
what = pd.merge(names, info, how="outer")
what.fillna("unknown")
</code></pre>
<p>奇怪的是,在输出中,我会得到一行,结果名是“bobjames”,另一行的位置是“devsys”。最后,即使bill没有出现在names数据框中,它也会出现在结果数据框中。所以我真的需要一种方法来表示在另一个数据框中查找一个值,如果你在这些列上发现了什么。</p>