pandas 从 Dataframe 中删除出现在另一个 Dataframe 中的行

velaa5lx  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(306)

我有一个问题,删除行从 Dataframe 中发生在另一个 Dataframe 。下面简单的例子和预期的结果。
DF1
| A类|B|
| - ------|- ------|
| Z型|1个|
| 十|第二章|
| C级|三个|
| 五|四个|
DF2
| A类|B|
| - ------|- ------|
| 设计和开发部|六十六|
| Z型|1个|
| 十|第二章|
| 消委会|五十五|
应为输出df 2,但df 1中出现的行被删除。
新df 2:
| A类|B|
| - ------|- ------|
| 设计和开发部|六十六|
| 消委会|五十五|
编辑:我需要同时匹配A和B。

k5ifujac

k5ifujac1#

IIUC,您可以在indicator=True的帮助下使用反向merge

(df2
 .merge(df1, how='left', indicator=True) # if unrelated columns use on=['A', 'B']
 .loc[lambda d: d.pop('_merge').eq('left_only')]
)

输出:

A   B
0  DD  66
3  CC  55
vbkedwbf

vbkedwbf2#

使用pandasql:

df2.sql("select * from self where not exists (select 1 from df1 where df1.A=self.A and df1.B=self.B)",df1=df1)

输出:

A   B
0  DD  66
3  CC  55

相关问题