You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:45:30