我有两套
A = {1,2,3,4,5,6}
B = {4,5,6,7,8,9}
我想从集合B中获取设置B的数据(即数据不应包含交集数据)
exclBdata = pd.merge(A, B, how='right', left_index =True, right_index = True)
当我使用上述命令时,我正在
{4,5,6,7,8,9}
我认为我没有正确地传递论据。请纠正我输出<= p>的正确命令
{7,8,9}
下面我提到数据框示例
right1 = DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'],
'value': range(6)})
>>> left1 = DataFrame({'group_val': [3.5, 7]}, index=['a', 'b'])
>>> right1
key value
0 a 0
1 b 1
2 a 2
3 a 3
4 b 4
5 c 5
>>> right1
key value
0 a 0
1 b 1
2 a 2
3 a 3
4 b 4
5 c 5
>>> left1
group_val
a 3.5
b 7.0
因此,当我合并时,我应该只将“c”5作为“a”并且“b”存在于两者中
谢谢(仅供参考:我使用的是python 3.4.2)
答案 0 :(得分:2)
你可以尝试使用面具:
import pandas as pd
A = {1,2,3,4,5,6}
B = {4,5,6,7,8,9}
a = pd.DataFrame(list(A), columns=['test'])
b = pd.DataFrame(list(B), columns=['test'])
mask = b['test'].isin(a.test)
b[~mask]
Out[7]:
test
3 7
4 8
5 9
来源:Excluding rows from a pandas dataframe based on column value and not index value
答案 1 :(得分:2)
除了isin()
方法(@Till's answer中已经很好地解释了),我们可以使用query()
方法:
In [223]: right1.query("key not in @left1.index")
Out[223]:
key value
5 c 5
来源DF:
In [224]: left1
Out[224]:
group_val
a 3.5
b 7.0
In [225]: right1
Out[225]:
key value
0 a 0
1 b 1
2 a 2
3 a 3
4 b 4
5 c 5
答案 2 :(得分:0)
如果您正在使用set
,则不需要pandas试试这个:
A = {1,2,3,4,5,6}
B = {4,5,6,7,8,9}
# You want to take the elements in B if they are not in A
C = [element for element in B if element not in A]