如何在 pandas 中执行反连接
反连接允许您返回一个数据集中在另一个数据集中没有匹配值的所有行。
您可以使用以下语法在两个 pandas DataFrame 之间执行反连接:
outer = df1. merge (df2, how=' outer ', indicator= True ) anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 )
以下示例展示了如何在实践中使用此语法。
示例:在 Pandas 中执行反连接
假设我们有以下两个 panda DataFrame:
import pandas as pd
#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
' points ': [18, 22, 19, 14, 30]})
print (df1)
team points
0 to 18
1 B 22
2 C 19
3 D 14
4 E 30
#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'F', 'G'],
' points ': [18, 22, 19, 22, 29]})
print (df2)
team points
0 to 18
1 B 22
2 C 19
3 F 22
4 G 29
我们可以使用以下代码返回第一个 DataFrame 中在第二个 DataFrame 中没有匹配团队的所有行:
#perform outer join outer = df1. merge (df2, how=' outer ', indicator= True ) #perform anti-join anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 ) #view results print (anti_join) team points 3 D 14 4 E 30
我们可以看到第一个 DataFrame 中恰好有两个团队在第二个 DataFrame 中没有匹配的团队名称。
反连接按预期工作。
最终结果是一个 DataFrame,其中仅包含团队名称属于第一个 DataFrame 而不是第二个 DataFrame 的行。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务: