pandas求两个表格不相交的集合方法

  • Post category:Python

下面是关于”Pandas求两个表格不相交的集合方法”的完整攻略。

基本概念

在 Pandas 中,我们可以使用 pd.concat() 函数来对两个表格进行纵向(vertical)、横向(horizontal)方向的合并。但是,在某些场景下,我们需要获取两个表格之间不相交的数据,这个功能也是 Pandas 支持的。

操作步骤

我们可以通过以下步骤来获取两个表格之间不相交的数据:

  1. 使用 Pandas 的 pd.concat() 函数,将两个表格按照需要的方式合并。
  2. 利用 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 的初学者,建议实践几次以加深记忆。