【问题标题】:pandas left join where right is null on multiple columnspandas left join 多列的 right 为空
【发布时间】:2018-09-04 08:24:09
【问题描述】:

我有两个熊猫 df x 和 y,它们都有相同的 3 列 A B C(不可为空)。我需要创建一个新的 df z,通过“从 x 中减去与 y 的行完全相同的行”获得,即 a

x left join y on x.A=y.A and x.B=y.B and x.C=y.C
where y.A is null

我该怎么做?被索引卡住了,concat,merge,join,...

例子:

dataframe x
A    B    C
q1   q2   q3
q4   q2   q3
q7   q2   q9

dataframe y
A    B    C
q4   q2   q3

dataframe z
A    B    C
q1   q2   q3
q7   q2   q9

【问题讨论】:

  • 你能创建数据样本和预期输出吗?
  • 当然,添加示例

标签: python-3.x pandas


【解决方案1】:

我认为需要 merge 带有指示器并仅过滤来自 left DataFrame 的行:

df = x.merge(y, indicator='i', how='outer').query('i == "left_only"').drop('i', 1)
print (df)
    A   B    C
0  q1  q2   q3
2  q7  q2  q93

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多