我有一个数据帧df1
,它看起来像:
c k l
0 A 1 a
1 A 2 b
2 B 2 a
3 C 2 a
4 C 2 d
还有一个叫做df2
的:
c l
0 A b
1 C a
我想筛选df1
只保留不在df2
中的值。要筛选的值应为(A,b)
和(C,a)
元组。到目前为止,我试图应用isin
方法:
d = df[~(df['l'].isin(dfc['l']) & df['c'].isin(dfc['c']))]
除此之外,在我看来太复杂了:
c k l
2 B 2 a
4 C 2 d
但我希望:
c k l
0 A 1 a
2 B 2 a
4 C 2 d
我认为这是一种非常简单的方法,当您希望基于来自另一个数据帧的多个列或甚至基于自定义列表筛选一个数据帧时。
在由所需列构造的多索引上使用
isin
可以有效地执行此操作:我认为这改进了@IanS的类似解决方案,因为它不假定任何列类型(即它可以处理数字和字符串)。
(以上答案是编辑。以下是我的初步回答)
有趣!这是我以前从未遇到过的。。。我可能会通过合并两个数组,然后删除定义
df2
的行来解决这个问题。下面是一个使用临时数组的示例:可能有一种不使用临时数组的方法,但是我想不出一种。只要你的数据不是很大,上面的方法应该是一个快速和充分的答案。
这很简洁,效果很好:
相关问题 更多 >
编程相关推荐