PySpark:保留DataFrame重复项同时排除另一DataFrame中的数据
解决思路与代码示例
先构造符合你描述的示例DataFrame,方便直接测试:
import pandas as pd df1 = pd.DataFrame({'data': ['DATA1', 'DATA1', 'DATA2', 'DATA2']}) df2 = pd.DataFrame({'data': ['DATA2']})
方法1:用isin()取反筛选(最直接)
利用isin()判断df1的行是否存在于df2中,再通过取反符号~筛选出不在df2里的行,能完整保留df1原有的重复结构:
result = df1[~df1['data'].isin(df2['data'])]
方法2:左连接后过滤未匹配行
通过左连接标记出仅存在于df1的行,再过滤得到结果:
# 左连接并添加匹配标记列 merged_df = df1.merge(df2, on='data', how='left', indicator=True) # 筛选仅在df1中存在的行,删除标记列 result = merged_df[merged_df['_merge'] == 'left_only'].drop(columns='_merge')
两种方法运行后得到的结果都是:
data 0 DATA1 1 DATA1
内容的提问来源于stack exchange,提问作者TommyQu
相关产品推荐
相关产品推荐

