Python中如何提取Pandas DataFrame剩余数据?pd.merge是否可行?
提取DataFrame中不在另一DataFrame内的记录
方法1:使用pd.merge解决
完全可以用pd.merge实现需求,通过左连接+匹配标记筛选的方式:
import pandas as pd # 假设你的两个数据集为df1(100名学生)、df2(20名学生) merged_df = pd.merge(df1, df2, on=['Student ID', 'Students Name'], how='left', indicator=True) # 筛选仅在df1中存在的记录,并移除标记列 result_df = merged_df[merged_df['_merge'] == 'left_only'].drop(columns='_merge')
原理:左连接(how='left')会保留df1的所有行,_merge列会标记每行的匹配状态——left_only代表该行仅存在于df1中,筛选这类行即可得到剩余80名学生的数据。
方法2:利用isin做布尔索引(更简洁)
如果Student ID是唯一标识(不会重复),可以直接用布尔索引筛选,代码更简洁:
# 生成筛选掩码:取反df1中ID在df2里的情况 mask = ~df1['Student ID'].isin(df2['Student ID']) result_df = df1[mask]
方法3:concat+drop_duplicates
通过合并两个数据集后删除重复项,也能得到目标结果:
combined = pd.concat([df1, df2]) # 保留仅出现一次的记录(即df1独有的数据) result_df = combined.drop_duplicates(subset=['Student ID', 'Students Name'], keep=False)
内容的提问来源于stack exchange,提问作者whitehat
相关产品推荐
相关产品推荐

