如何在Pandas DataFrame中找到共同元素?

如何在Pandas DataFrame中找到共同元素?

Pandas 是数据科学家的瑞士军刀之一,通过它我们可以进行数据处理、数据分析、数据挖掘等各种数据阶段的工作。在日常数据处理中,有时候需要找到两个或多个Pandas DataFrame中的共同元素。这个问题看起来简单,但是要处理好不是那么容易。在本文中,我们将讨论如何使用Pandas DataFrame找到共同元素的方法。

Pandas DataFrame简介

在我们介绍共同元素之前,先简单介绍一下Pandas DataFrame。 Pandas DataFrame是Pandas库重要的数据类型之一,类似于我们经常使用的Excel表格。它由多个行和列组成,可以是数值型、字符串型、布尔型,是处理大量数据的理想工具。以下是创建一个简单的Pandas DataFrame的示例:

import pandas as pd

data = {'name': ['Tom', 'Jack', 'Mary'], 'age': [20, 21, 22], 'gender': ['M', 'M', 'F']}

df = pd.DataFrame(data)

print(df)

这个程序将输出:

   age gender  name
0   20      M   Tom
1   21      M  Jack
2   22      F  Mary

Pandas DataFrame拥有许多方便的操作函数,如read_csv()join()等,在本文中我们将用到其中的merge()

使用Pandas DataFrame找到共同元素

操作简介

在Pandas DataFrame中,可以使用merge函数查找同时存在于两个DataFrame中的数据。merge函数会把两个DataFrame中的两列进行比较,找到共同的列,并将这些共同的数据进行整合输出。下面让我们简单介绍几个参数:

  • left: 用以合并的第一个 DataFrame
  • right: 用以合并的第二个 DataFrame
  • how: 指定合并方式,包括inner(内联,取两表内部相同部分)、left(左外联,取左表全部,右表相应部分)和right(右外联,取右表全部,左表相应部分)
  • on: 用以合并的 DataFrame 列名,如果没有指定,则使用两个 DataFrame 共同的列名
  • left_on / right_on: 用以合并的列名,分别对应左右两个 DataFrame 的列名
  • left_index / right_index: 是否使用 DataFrame 的行名作为对应列名,如果是,则将这个参数设为 True

示例代码

以下我们将通过几个实例来学习如何在Pandas DataFrame中找到共同元素。

1. 内联合并

内联查找是查找两个表中相同元素的最常用方法之一。下面是简单的内联合并示例:

import pandas as pd

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'age': [20, 30, 40, 50]})

right = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
'age': [30, 40, 50]})

result = pd.merge(left, right, on='key')

print(result)

这个程序将输出:

  key  age_x  age_y
0  K0     20     30
1  K1     30     40
2  K2     40     50

我们可以看到,输出的结果是合并后共同元素。

2. 左外联合并

在左外联合并中,会以左表格为主,为其余右表找到相应的相同数据,缺失的部分将被设置为NaN。下面是一个简单的左外联合并实例:

import pandas as pd

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                     'age': [20, 30, 40, 50]})

right = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
                      'age': [30, 40, 50]})

result = pd.merge(left, right, on='key', how='left')

print(result)

这个程序将输出:

  key  age_x  age_y
0  K0     20   30.0
1  K1     30   40.0
2  K2     40   50.0
3  K3     50    NaN

3. 右外联合并

与左外联合并类似,只是以右表格为主。下面是右外联合并实例:

import pandas as pd

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                     'age': [20, 30, 40, 50]})

right = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
                      'age': [30, 40, 50]})

result = pd.merge(left, right, on='key', how='right')

print(result)

这个程序将输出:

  key  age_x  age_y
0  K0   20.0     30
1  K1   30.0     40
2  K2   40.0     50

4. 多对多合并

最后一个实例是多对多合并。在多对多的合并中,我们将使用另外两个更复杂的数据框:

import pandas as pd

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                     'key2': ['K0', 'K1', 'K0', 'K1'],
                     'value_left': [1, 2, 3, 4]})

right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K1', 'K1', 'K0', 'K0'],
                      'value_right': [5, 6, 7, 8]})

result = pd.merge(left, right, on=['key1', 'key2'])

print(result)

输出结果:

  key1 key2  value_left  value_right
0   K0   K0           1            8
1   K1   K0           3            7
2   K0   K1           2            5
3   K1   K1           3            6

这个程序将输出展示了两个表格之间的多对多关系,只输出其中相同的元素。

结论

通过本文中的介绍,我们知道了如何在Pandas DataFrame中找到共同元素。我们还学习了不同类型的合并方法并且演示了实例,包括内联合并、左外联合并、右外联合并和多对多组合。Pandas DataFrame作为数据处理过程中不可或缺的工具,我们可以在现实生活中更高效地处理数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程