【问题标题】:Removing rows from dataframe that occurs in another dataframe从另一个数据框中出现的数据框中删除行
【发布时间】:2023-02-17 14:13:31
【问题描述】:

我在从另一个数据框中出现的数据框中删除行时遇到问题。 下面是简单示例和预期结果。

df1

A B
Z 1
X 2
C 3
V 4

DF2

A B
DD 66
Z 1
X 2
CC 55

预期输出 df2 但出现在 df1 中的行被丢弃。

新的DF2:

A B
DD 66
CC 55

编辑:我需要同时匹配 A 和 B。

【问题讨论】:

  • 你想同时匹配 A 和 B 以删除吗?
  • @mozway 是的,我需要同时匹配 A 和 B

标签: python pandas


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用熊猫数据库:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 2020-11-13
      • 1970-01-01
      • 2016-09-15
      • 2019-02-04
      相关资源
      最近更新 更多