求两个dataframe的差集其实就是找到第一个dataframe中不在第二个dataframe中出现的记录。利用Pandas可以非常方便地完成这个过程。
在实现中,首先需要将两个dataframe进行合并(即concat),然后对该合并后的表进行去重(即drop_duplicates),最后再筛选出不在第二个dataframe的记录(即~df3.isin(df2))即可。
以下是示例代码说明:
import pandas as pd
# 示例1
df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3', 'A4'],
'B': ['B1', 'B2', 'B3', 'B4']})
df2 = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
'B': ['B1', 'B2', 'B3']})
df3 = pd.concat([df1, df2])
df3 = df3.drop_duplicates()
diff_df = df3[~df3.isin(df2)]
print(diff_df)
# 示例2
df1 = pd.DataFrame({'A': ['A1', 'A2', 'A3', 'A4'],
'B': ['B1', 'B2', 'B3', 'B4']})
df2 = pd.DataFrame({'A': ['A3', 'A2'],
'B': ['B3', 'B2']})
df3 = pd.concat([df1, df2])
df3 = df3.drop_duplicates()
diff_df = df3[~df3.isin(df2)]
print(diff_df)
第一个示例中,df1和df2分别为两个不同的dataframe。利用concat方法将它们拼接起来,然后利用drop_duplicates去重。最后在合并后的表df3筛选出不在df2中的记录即为两个dataframe的差集。
第二个示例中,df1和df2与第一个示例相同,只是数据有所不同。同样地,将它们合并、去重后筛选出不在df2中的记录,即为两个dataframe的差集。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Pandas求两个dataframe差集的过程详解 - Python技术站