如何在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
: 用以合并的第一个 DataFrameright
: 用以合并的第二个 DataFramehow
: 指定合并方式,包括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作为数据处理过程中不可或缺的工具,我们可以在现实生活中更高效地处理数据。