📜  如何在 Pandas 中的某些匹配条件下 LEFT ANTI 加入(1)

📅  最后修改于: 2023-12-03 15:08:44.067000             🧑  作者: Mango

如何在 Pandas 中的某些匹配条件下 LEFT ANTI 加入

在 Pandas 中,LEFT ANTI JOIN 是一种数据合并的方式,用于将两个数据集中的不符合特定条件的行(即左侧数据集中有而右侧数据集中没有)合并到一起。本文将介绍在 Pandas 中如何执行 LEFT ANTI JOIN。

前提条件

为了能够执行 LEFT ANTI JOIN,需要确保你已经安装了 Pandas,该库可以用来操作和处理类似于 Excel 中的表格数据。

Pandas 中的 LEFT ANTI JOIN

在 Pandas 中,LEFT ANTI JOIN 通常需要配合 merge() 函数来实现。该函数可以将两个数据框按照指定的列进行合并。LEFT ANTI JOIN 保留所有在左侧数据集中出现但在右侧数据集中未出现的行。在 Pandas 中实现 LEFT ANTI JOIN 的步骤如下:

  1. 定义左侧数据集和右侧数据集

在开始之前,需要定义两个数据集。左侧数据集为包含所有需要合并的行的数据框。右侧数据集为与左侧数据集进行比较的数据框,它包含了匹配条件。

import pandas as pd
left_df = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
right_df = pd.DataFrame({'key': ['A', 'E', 'F'], 'value': [10, 20, 30]})

其中,left_df 包含了 4 行数据,right_df包含了 3 行数据。

  1. 使用 merge() 函数进行匹配

接下来,使用 merge() 函数来将左侧数据集与右侧数据集进行匹配。使用 how='left' 指定了左侧 JOIN,使用 on='key' 指定了匹配条件。

merged_df = pd.merge(left_df, right_df, how='left', on='key')

这样,我们就可以在 merged_df 变量中获取合并后的数据集。merged_df 包含了所有在左侧数据集中出现但右侧数据集中未出现的行,即 ['B', 'C', 'D']。

  1. 将不符合条件的数据保存到新的数据框中

最后,可以通过 loc 和 isna 函数来过滤掉已经匹配到的行,获取不符合条件的数据。

left_anti_df = merged_df.loc[merged_df['value_y'].isna(), ['key', 'value_x']]

通过这样的方式,我们就可以得到 LEFT ANTI JOIN 后的数据集 left_anti_df。

总结

本文介绍了 Pandas 中如何在某些匹配条件下执行 LEFT ANTI JOIN 的方法,它需要配合 merge() 函数使用。通过定义左侧和右侧数据集,并使用 merge() 函数来实现 LEFT ANTI JOIN,然后使用 loc 和 isna 函数来过滤掉已经匹配到的行,获取不符合条件的数据。