【发布时间】:2015-03-26 07:40:43
【问题描述】:
我有 2 个数据框,其中一个包含另一部分(但不是全部)行的补充信息。
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']})
我想从上面的info 数据框中取出分类列,并将其添加到上面的names 数据框中。但是,当我执行combined = pd.merge(names, info) 时,生成的数据帧只有 4 行长。所有没有补充信息的行都会被删除。
理想情况下,我会将那些缺失列中的值设置为未知。导致数据框有些人是小偷,有些人很好,而其他人是未知的。
编辑: 我收到的第一个答案之一建议使用合并外部,这似乎做了一些奇怪的事情。这是一个代码示例:
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")
奇怪的是,在输出中我会得到一行结果名称是“bobjames”,而另一个位置是“devsys”。最后,即使账单没有出现在名称数据框中,它也会显示在结果数据框中。所以我真的需要一种方法来说明在这个其他数据框中查找一个值,如果你在这些列上发现了一些东西。
【问题讨论】: