关键词

在Pandas中如何在某些匹配条件下进行LEFT ANTI连接

Pandas中进行LEFT ANTI连接,实际上是指从左边表中选择不符合特定条件的记录,然后将其保留,并从左右两个表中删除符合条件的记录。这种连接通常用于在两个数据集之间找出差异,它与INNER JOIN和LEFT OUTER JOIN不同,因为它只返回符合条件的记录。

下面是LEFT ANTI连接的完整攻略:

  1. 导入Pandas模块和两个数据集

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [10, 20, 30, 40]})
df2 = pd.DataFrame({'A': [3, 4, 5, 6], 'B': [30, 40, 50, 60]})

  1. 将df1和df2连接起来

df_merged = pd.merge(df1, df2, on='A', how='left', indicator=True)

在此操作中,我们使用merge()函数连接两个数据集,并且指定了'on'参数为'A',这意味着我们要在'A'列上进行连接。'how'参数设置为'left',因此我们要执行LEFT ANTI连接。如果我们不需要了解LEFT ANTI连接的具体过程,我们还可以将'indicator'参数设置为True,使导出的数据集包含一个新列'_merge',描述每个记录来自哪个数据集。

  1. 筛选出符合条件的记录并删除

df_output = df_merged.loc[df_merged['_merge'] == 'left_only', ['A','B_x']]
df_output.rename(columns={'B_x': 'B'}, inplace=True)

在此操作中,我们筛选出'Merged'数据集中'_merge'列为'left_only'的记录。这些记录是不符合连接条件的。我们然后将这些记录的'A'和'B_x'列导出,并把'B_x'列名更改为'B'以便于输出结果。

结果输出:

我们可以将结果导出到一个新的csv文件中,代码如下:

df_output.to_csv("left_anti.csv", index=False)

左连接结果为:

A B
1 10
2 20

从结果中我们看到,只有'A'=1和2的记录留了下来,符合条件的记录'A'=3和4被删除了。

本文链接:http://task.lmcjl.com/news/14545.html

展开阅读全文