下面是关于”Pandas求两个表格不相交的集合方法”的完整攻略。
基本概念
在 Pandas 中,我们可以使用 pd.concat()
函数来对两个表格进行纵向(vertical)、横向(horizontal)方向的合并。但是,在某些场景下,我们需要获取两个表格之间不相交的数据,这个功能也是 Pandas 支持的。
操作步骤
我们可以通过以下步骤来获取两个表格之间不相交的数据:
- 使用 Pandas 的
pd.concat()
函数,将两个表格按照需要的方式合并。 - 利用 Pandas 提供的通过仅保留重复项或非重复项来获取集合差异的函数,来筛选不相交的数据。
下面,我们会结合两条示例说明具体操作步骤。
示例一
现在有两个表格 A 和 B,它们的结构如下:
A:
ID Name Age
0 1 John 22
1 2 Alice 21
2 3 Peter 20
3 4 Sarah 24
B:
ID Name Age
0 2 Alice 21
1 6 Jennifer 25
2 5 Mark 22
现在我们需要找到表格 A 和表格 B 不相交的数据。具体操作如下:
import pandas as pd
# 构造表格 A 和表格 B
A = pd.DataFrame({
'ID': [1, 2, 3, 4],
'Name': ['John', 'Alice', 'Peter', 'Sarah '],
'Age': [22, 21, 20, 24]
})
B = pd.DataFrame({
'ID': [2, 6, 5],
'Name': ['Alice', 'Jennifer', 'Mark'],
'Age': [21, 25, 22]
})
# 使用 pd.concat() 函数合并表格 A 和表格 B
C = pd.concat([A, B], ignore_index=True)
# 使用 pd.DataFrame.drop_duplicates() 函数,剔除掉 A 和 B 公共部分,得到不相交的数据
D = pd.concat([C, C]).drop_duplicates(keep=False)
print(D)
输出的结果为:
ID Name Age
0 1 John 22
2 3 Peter 20
3 4 Sarah 24
1 6 Jennifer 25
2 5 Mark 22
可以看到,得到的结果就是表格 A 和表格 B 不相交的数据。
示例二
现在有两个表格 A 和 B,它们的结构如下:
A:
Name Age
0 John 22
1 Mary 34
2 Alex 28
3 Paul 33
B:
Name Age
0 John 22
1 Mary 34
2 Jack 19
现在我们需要找到表格 A 和表格 B 不相交的数据。具体操作如下:
import pandas as pd
# 构造表格 A 和表格 B
A = pd.DataFrame({
'Name': ['John', 'Mary', 'Alex', 'Paul'],
'Age': [22, 34, 28, 33]
})
B = pd.DataFrame({
'Name': ['John', 'Mary', 'Jack'],
'Age': [22, 34, 19]
})
# 使用 pd.concat() 函数合并表格 A 和表格 B
C = pd.concat([A, B], ignore_index=True)
# 使用 pd.DataFrame.drop_duplicates() 函数,剔除掉 A 和 B 公共部分,得到不相交的数据
D = C.drop_duplicates(subset=['Name','Age'], keep=False)
print(D)
输出的结果为:
Name Age
2 Alex 28
3 Paul 33
2 Jack 19
可以看到,得到的结果就是表格 A 和表格 B 不相交的数据。
结语
通过上述示例,我们可以看到获取两个表格不相交的集合方法的具体实现方法。对于 Pandas 的初学者,建议实践几次以加深记忆。