python - 根据所选列过滤重复的行并与 Pandas 中的另一个数据框进行比较

给定两个数据框如下:

import pandas as pd 

# Creating a DataFrame object   
df1 = pd.DataFrame([('Stuti', 28, 'Varanasi'), 
            ('Saumya', 32, 'Delhi'), 
            ('Aaditya', 25, 'Mumbai'), 
            ('Saumya', 32, 'Delhi')],  
                   columns = ['Name', 'Score', 'City']) 

df2 = pd.DataFrame([('Saumya', 32, 'Delhi'), 
            ('Saumya', 32, 'Mumbai'), 
            ('Aaditya', 40, 'Mumbai'), 
            ('Seema', 32, 'Delhi')],  
                   columns = ['Name', 'Score', 'City'])

我如何为 df2 创建掩码以根据 df1 和列 NameCity 过滤重复的行>,如果df1中存在相同的配对,则返回checkDuplicated,否则返回None

预期的结果会是这样的:

    Name  Score      City       Check
0   Saumya     32     Delhi  Duplicated
1   Saumya     32    Mumbai        None
2  Aaditya     40  Dehradun  Duplicated
3    Seema     32     Delhi        None

更新代码:

df = pd.concat([df1, df2])

df[df.duplicated(['Name', 'City'])] 

输出:

      Name  Score    City
3   Saumya     32   Delhi
0   Saumya     32   Delhi
2  Aaditya     40  Mumbai

最佳答案

In [65]: df2.merge(df1[['Name', 'City']].drop_duplicates(), how='left', indicator='Check').assign(Check=lambda x: np.where(x['Check'] == 'both', 'Duplicated', None))
Out[65]:
      Name  Score    City       Check
0   Saumya     32   Delhi  Duplicated
1   Saumya     32  Mumbai        None
2  Aaditya     40  Mumbai  Duplicated
3    Seema     32   Delhi        None

https://stackoverflow.com/questions/65559950/

相关文章:

python - 功能测试没有按预期进行(AoC 第 4 天的一部分)

git - 如何为 gerrit 事件配置 Gerrit Webhooks

javascript - JavaScript 中的常量数组

reactjs - 接口(interface)命名约定(接口(interface)名称与组件名称冲突

c++ - 在模板参数中,哪些规则允许编译器推断数组的项数?

powershell - 在 switch 语句中分配变量

reactjs - React 项目中的 URI 格式错误 - 使用 Parcel Bundler

android-studio - flutter SDK 不完整

c++ - C++ 是否包含包含的头文件包含的所有头文件?

c++ - fatal error LNK2019 C++,Unreal Engine Build