我有一个 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 中描述的各种选项,但是我一直无法让它工作。
您的帮助将不胜感激。
最佳答案
merge
和 indicator=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/