python - Pandas 将数据框与 NaN (或 "unknown")合并以查找缺失值

标签 python pandas dataframe

我有 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 行长。所有没有补充信息的行都会被删除。

理想情况下,我会将那些缺失列中的值设置为未知。导致数据框有些人是小偷,有些人很好,而其他人是未知的。

编辑: 我收到的第一个答案之一是建议使用 merge outter,这似乎会做一些奇怪的事情。这是一个代码示例:

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”。最后,即使账单没有出现在名称数据框中,它也会显示在结果数据框中。所以我真的需要一种方法来说明在这个其他数据框中查找一个值,如果你在这些列上发现了一些东西。

最佳答案

如果您仍在为此寻找答案:

您描述的“奇怪”的事情是由于您的代码中的一些小错误。例如,第一个(出现“bobjames”和“devsys”)是由于源数据帧中这两个值之间没有逗号。第二个是因为 pandas 不关心数据框的名称,而是在合并时关心列的名称(您有一个名为“名称”的数据框,但您的列也称为“名称”)。否则,合并似乎完全符合您的要求:

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)

这将导致:

      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

关于python - Pandas 将数据框与 NaN (或 "unknown")合并以查找缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174752/

相关文章:

python - 如何使用 Django 访问 SQLite

python - 如何在Python 3中更改csv中的日期格式

python 乘以两个收集计数器

python - 使用 for 循环在 pandas 中附加多个数据帧

python - 将数据框中的行折叠成一个特定行以填充缺失值?

来自具有多列的 Pandas 数据框的 Python 散点图

python - 无法使用 "#!/usr/bin/env python"将参数传递给 python

python - 如何使用来自另一个 pandas.DataFrame 的数据填充 pandas.DataFrame 中的列?

python - 添加不同索引的列

Python:确定存储在数据框中的三个文本字符串是否有任何共同的词