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

如何使用Pandas按Code列取两个DataFrame的差集生成新DataFrame

实现方案

方法1:使用isin()布尔索引(最简洁高效)

直接通过集合匹配筛选df2中Code不在df1的Code列中的行即可,无需遍历:

# 提取df1中所有唯一的Code值,去重可大幅提升大数据量下的匹配效率
df1_code_set = df1['Code'].unique()
# 取反筛选得到符合要求的df3,reset_index可选,用于重置结果的行索引
df3 = df2[~df2['Code'].isin(df1_code_set)].reset_index(drop=True)

方法2:使用merge关联实现(适合多字段匹配场景)

如果你需要用merge实现,需要配合外连接和indicator参数标记行的来源,再筛选仅在df2中存在的行即可:

# 仅取df1的Code列做关联,避免冗余字段影响结果
temp_df = df1[['Code']].merge(df2, on='Code', how='outer', indicator=True)
# 筛选仅在df2中存在的行,删除标记列后重置索引
df3 = temp_df[temp_df['_merge'] == 'right_only'].drop(columns=['_merge']).reset_index(drop=True)

以上两种方案都是Pandas原生的向量化操作,完全符合Pythonic的写法,性能远高于逐行遍历。

内容的提问来源于stack exchange,提问作者chowpay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:05