df1中所有不在df2中的行 [英] all rows in df1 that are NOT in df2
本文介绍了df1中所有不在df2中的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个看起来像的df(df1)
I have a df (df1) that looks like:
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的子集:
I have another df (df2) that is a subset of df1:
df2 = pd.DataFrame([
['YYZ', 'SFO', 1],
['YYZ', 'YYD', 1]
], columns=['city1', 'city2', 'val'])
我想要df1中所有不在df2中的行.
I want all rows in df1 that are NOT in df2.
我尝试了本文基于条件切片的各种选项2列的值,但是我无法使其正常工作.
I've tried various options described in this post conditional slicing based on values of 2 columns, however I haven't been able to get it to work.
您的帮助将不胜感激.
推荐答案
- 将
merge
与indicator=True
一起使用 - 然后使用
query
仅删除带有'left_only'
的内容 - Use
merge
withindicator=True
- Then use
query
to strip out only those with'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
这篇关于df1中所有不在df2中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文