<p>如果你还在寻找答案:</p>
<p>您所描述的“奇怪”的事情是由于代码中的一些小错误造成的。例如,第一个(出现“bobjames”和“devsys”)是因为在源数据帧中这两个值之间没有逗号。第二个原因是pandas不关心数据帧的名称,而是在合并时关心列的名称(有一个名为“names”的数据帧,但列也名为“names”)。否则,合并似乎正按您所期望的方式进行:</p>
<pre><code>import pandas as pd
names = pd.DataFrame({'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 = pd.DataFrame({'names':['joe','mark','tim','frank','joe','bill'],
'classification':['thief','thief','good','thief','good','thief']})
what = pd.merge(names, info, how="outer")
what.fillna('unknown', inplace=True)
</code></pre>
<p>这将导致:</p>
<pre><code> names position classification
0 bob dev unknown
1 bob dev unknown
2 bob dev unknown
3 bob dev unknown
4 frank dev thief
5 james dev unknown
6 tim sys good
7 ricardo sys unknown
8 mike sys unknown
9 mark sup thief
10 joan sup unknown
11 joe sup thief
12 joe sup good
13 bill unknown thief
</code></pre>