我有两个数据帧:df1和df2。 我想消除df1中所有出现的df2行。 基本上,这是集合差异运算符,但用于数据帧。
我的询问与this question非常相似,但有一个主要变化,即df1可能根本没有公共行。在那种情况下,如果我们合并两个数据帧,然后删除重复的数据帧,它仍然不能消除df1中出现的df2。事实上,它增加了它。
该问题与this相似,除了我希望对行进行操作。
示例:
Case 1:
df1:
A,B,C,D
E,F,G,H
df2:
E,F,G,H
Then, df1-df2:
A,B,C,D
Case 2:
df1:
A,B,C,D
df2:
E,F,G,H
Then, df1 - df2:
A,B,C,D
简单地说,我正在寻找一种做df1-df2的方法(如果存在于df1中,请删除df2)。应该怎么做?
答案 0 :(得分:4)
尝试:
df1[~df1.isin(df2)]
A,B,C,D
答案 1 :(得分:4)
设置difference在这里可以使用,它在ar1中返回不在ar2中的唯一值。
np.setdiff1d(df1, df2)
或者以DataFrame的形式获取结果,
pd.DataFrame([np.setdiff1d(df1, df2)])