Python 3.x 使用pandas合并数据以获取独占权限数据
我有两套Python 3.x 使用pandas合并数据以获取独占权限数据,python-3.x,pandas,Python 3.x,Pandas,我有两套 A = {1,2,3,4,5,6} B = {4,5,6,7,8,9} 我想从集合B中获取数据,集合B除外(即,数据不应包括交叉口数据) 当我使用上述命令时,我得到 {4,5,6,7,8,9} 我认为我没有正确地传递论点。请纠正我什么是获得输出的正确命令 {7,8,9} 下面我将提到数据帧示例 right1 = DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'], 'value':
A = {1,2,3,4,5,6}
B = {4,5,6,7,8,9}
我想从集合B中获取数据,集合B除外(即,数据不应包括交叉口数据)
当我使用上述命令时,我得到
{4,5,6,7,8,9}
我认为我没有正确地传递论点。请纠正我什么是获得输出的正确命令
{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'都存在于这两者中
谢谢(仅供参考:我正在使用Python3.4.2)如果您正在使用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]
您可以尝试使用遮罩:
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
来源:除了
isin()
方法(在中有很好的解释)之外,我们还可以使用query()
方法:
In [223]: right1.query("key not in @left1.index")
Out[223]:
key value
5 c 5
来源DFs:
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
如果这些是实际设置,您需要
B-A
。你为什么要用熊猫来做这个?上面我举了一个简单的例子。事实上,我有一个包含多列的大数据框。你能给出数据框的例子吗?事实上,我正在寻找上面提到的合并操作,我正在使用数据框。上面的问题中给出了数据帧示例,您是否可以“通常”将它们合并,然后使用类似于:df=df[df['C'].isin(df['A'].tolist()),这很难想象您的数据是什么样子的…很抱歉,我没有从问题请求中提到的示例中获得请Elobart的信息。谢谢
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