从一个数据框中删除存在于另一数据框中的行

时间:2019-07-26 09:12:41

标签: python pandas

我有两个数据帧DfMasterDfRemove

DfMaster如下:

     Id           Name Building
0  4653     Jane Smith        A
1  3467    Steve Jones        B
2    34        Kim Lee        F
3  4567     John Evans        A 
4  3643   Kevin Franks        S
5   244  Stella Howard        D

DfRemove如下:

     Id           Name Building
0  4567     John Evans        A 
1   244  Stella Howard        D

如果它们出现在DfMaster中,我想从DfRemove中删除所有记录。因此,本例中的新DfMaster如下所示:

     Id           Name Building
0  4653     Jane Smith        A
1  3467    Steve Jones        B
2    34        Kim Lee        F
3  3643   Kevin Franks        S

约翰和斯特拉被免职的地方。

我尝试过:

DfMaster [DfMaster [~DfRemove [id]]]

没有成功...

如果有人出现在DfMaster中,有人可以让我知道如何从DfRemove中删除任何记录吗?

2 个答案:

答案 0 :(得分:1)

您快到了,那就去做

DfMaster= DfMaster[~DfMaster.Id.isin(DfRemove.Id)]

输出:

     Id           Name Building
0  4653     Jane Smith        A
1  3467    Steve Jones        B
2    34        Kim Lee        F
3  3643   Kevin Franks        S

答案 1 :(得分:0)

我是否正确假设Id是唯一标识符(即比较Id就足够了)?

如果是这样,怎么办?

DfMaster = DfMaster.loc[~DfMaster['Id'].isin(DfRemove['Id'])]