在Pandas中进行LEFT ANTI连接,实际上是指从左边表中选择不符合特定条件的记录,然后将其保留,并从左右两个表中删除符合条件的记录。这种连接通常用于在两个数据集之间找出差异,它与INNER JOIN和LEFT OUTER JOIN不同,因为它只返回符合条件的记录。
下面是LEFT ANTI连接的完整攻略:
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]})
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',描述每个记录来自哪个数据集。
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