python - df1 中不在 df2 中的所有行

标签 python pandas

我有一个 df (df1) 看起来像:

df1 = pd.DataFrame([
        ['YYZ', 'SFO', 1],
        ['YYZ', 'YYD', 1],
        ['YYZ', 'EWR', 1],
        ['YYZ', 'DFW', 1],
        ['YYZ', 'LAX', 1],
        ['YYZ', 'YYC', 1]
    ], columns=['city1', 'city2', 'val'])

我有另一个 df (df2),它是 df1 的子集:

df2 = pd.DataFrame([
        ['YYZ', 'SFO', 1],
        ['YYZ', 'YYD', 1]
    ], columns=['city1', 'city2', 'val'])

我想要 df1 中不在 df2 中的所有行。

我已经尝试了这篇文章中描述的各种选项 conditional slicing based on values of 2 columns ,但是我无法让它工作。

我们将不胜感激。

最佳答案

  • 使用 mergeindicator=True
  • 然后使用query只去除那些带有'left_only'

df1.merge(
    df2, how='outer', indicator=True
).query('_merge == "left_only"').drop('_merge', 1)

  city1 city2  val
2   YYZ   EWR    1
3   YYZ   DFW    1
4   YYZ   LAX    1
5   YYZ   YYC    1

关于python - df1 中不在 df2 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41901322/

相关文章:

python - 如何使用 Selenium - Python 选择下拉菜单选项值

python - 为什么在使用 input() 时会出现 NameError?

python - 从多个列创建新列,其中值不是 NaN

python - Pandas:查找 CSV 中接下来每 10 个数据点的平均值

python - 找不到模块错误(imutils.paths)

Python:从同一个解释器同时执行多个脚本

python - 根据 df 中其他两列的比较设置列值

python - 根据上次某些条件成立的时间,将一列中的数据与另一行对齐

Python:元组/字典作为键、选择、排序

python - 从参数化 SQL 调用填充新的数据框列