使用 pandas 求两个表的补集?
假设有两个表,分别为df1和df2,可以使用 pandas 中的 merge() 函数来求两个表的补集。
具体步骤如下:
将两个表按照某个共同的列进行合并,例如可以使用 merge() 函数按照某个列(如 ‘id’)进行合并,代码如下:
merge_df = pd.merge(df1, df2, on='id', how='outer', indicator=True)
其中,how=’outer’ 表示使用外连接方式合并两个表,indicator=True 表示在合并结果中增加一个名为 _merge 的列,该列用于指示每一行所属的表。
2. 根据 _merge 列的值来筛选出补集,代码如下:
complement_df = merge_df[merge_df['_merge'] == 'left_only']
其中,’_merge’ == ‘left_only’ 表示只选择在 df1 中出现而在 df2 中没有出现的行,即 df1 的补集。
完整代码示例:
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'id': [1, 2, 3, 4], 'name': ['Alice', 'Bob', 'Charlie', 'David']})
df2 = pd.DataFrame({'id': [1, 3, 5], 'name': ['Alice', 'Charlie', 'Eve']})
# 求两个表的补集
merge_df = pd.merge(df1, df2, on='id', how='outer', indicator=True)
complement_df = merge_df[merge_df['_merge'] == 'left_only']
# 输出结果
print(complement_df)
输出结果为:
id name _merge
1 2 Bob left_only
3 4 David left_only