查找熊猫数据框中两个相关列之间的不匹配

哈拉齐

我有一个大熊猫数据框,它有两列。一列是项目的唯一代码,第二列包含该项目的名称。

例如,假设“ID”具有动物的唯一代码,“名称”具有该动物的名称。

df = pd.DataFrame({'ID': ['AA','BB', 'CC', 'DD', 'EE'], 
                   'Name': ['Ape', 'Bull', 'Chimp', 'Dog', 'Dog']})


    ID      Name
0   AA      Ape
1   BB      Bull
2   CC      Chimp
3   DD      Dog
4   EE      Dog

当我运行下面的代码时,我会得到错误,因为 ID 列中的唯一项比名称列中的多一个

len(df['Code'].unique()) == len(df['Name'].unique())

我的问题是如何找出两个代码代表哪种动物。理想情况下,我希望最终得到一个具有以下内容的数据框:

    ID  Name
3   DD  Dog
4   EE  Dog

但只要我能识别出不止一个 ID 所代表的动物,我就会对获得所需结果的任何解决方案感到满意。

谢谢

编辑:

数据框包含重复的行,因此类似于实际问题的更现实的示例是如下所示的数据框:

    ID      Name
0   AA      Ape
1   BB      Bull
2   CC      Chimp
3   DD      Dog
4   EE      Dog
5   CC      Chimp
6   AA      Ape
7   DD      Dog
8   FF      Frog

df = pd.DataFrame({'ID': ['AA','BB', 'CC', 'DD', 'EE', 'CC', 'AA', 'DD', 'FF'], 
                   'Name': ['Ape', 'Bull', 'Chimp', 'Dog', 'Dog', 'Chimp', 'Ape', 'Dog', 'Frog']})

期望的输出仍然是查找哪个ID已与两个不同的动物名称匹配

    ID  Name
3   DD  Dog
4   EE  Dog
迈克尔·什琴斯尼

对于像第二个示例(包含重复行)这样的数据框,带有一个稍微增强的示例

import pandas as pd

df = pd.DataFrame({'ID': ['AA','BB', 'CC', 'DD', 'EE', 'CC', 'AA', 'DD', 'FF', 'AA'], 
                   'Name': ['Ape', 'Bull', 'Chimp', 'Dog', 'Dog', 'Chimp', 'Ape', 'Dog', 'Frog','Bull']})
#    ID   Name
# 0  AA    Ape
# 1  BB   Bull
# 2  CC  Chimp
# 3  DD    Dog
# 4  EE    Dog
# 5  CC  Chimp
# 6  AA    Ape
# 7  DD    Dog
# 8  FF   Frog
# 9  AA   Bull

我们可以使用以下内容。对结果进行排序,以便更容易Name识别ID

df.groupby('Name').filter(lambda x: x['ID'].nunique() > 1).drop_duplicates(subset=['ID','Name']).sort_values('Name')

输出

   ID  Name
1  BB  Bull
9  AA  Bull
3  DD   Dog
4  EE   Dog

对于具有唯一行的数据框@ShubhamSharma 的答案要快得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过两个列值的范围查找数据框中的匹配间隔

在python中匹配两个熊猫数据框的列名

两个大熊猫数据框之间每日数据的月相关性

两个熊猫数据帧之间的快速Spearman相关

查找两个SQL数据表之间的不匹配

具有匹配标题的两个数据框列之间的相关性

两个熊猫数据框之间的欧式距离

数据框中两个或多个列之间的if语句

查找两个表之间不匹配的行

熊猫如何添加计数器以匹配两个数据框列之间的行

查找两个不同数据框的列之间的部分匹配项,并在找到匹配项时分配值

如何在两个不同的熊猫数据框中基于两列查找相同行的索引?

匹配两个熊猫数据框值

如何在两个熊猫数据框之间查找更新的行

计算具有相同列和某些不匹配行的两个熊猫数据框之间的差异

基于两个熊猫数据框之间的公式的计算

在两个表之间查找相关列

熊猫数据框中的两个大列之间的计算

查找两个熊猫数据框之间的部分字符串匹配的最快方法

如何通过匹配熊猫中两个不同数据框中的列来更新一个数据框的列

根据数据框中两个不同列之间的匹配来删除行

熊猫-屏蔽两个不共享索引的数据框之间的行/列

计算熊猫数据框中两个hh:mm列之间的时间差

熊猫:创建两个不重复匹配的数据框

熊猫中两个数据框之间的匹配日期

熊猫数据框中两列之间的模糊匹配

如何找到两个熊猫数据框之间的交集

比较两个熊猫数据框以查找字数

熊猫数据框中 datetime.index 列中两个连续日期之间的天数差异