我有一个 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/