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

如何基于另一个DataFrame筛选原DataFrame的记录

如何基于另一个DataFrame筛选原DataFrame的记录

嗨,这个需求其实很常见,用Pandas的内置方法就能轻松搞定,我给你两种实用的方案,你可以根据自己的场景选择:

方法一:用isin()直接筛选(最简洁直观)

这是处理这类筛选需求最常用的方式,核心思路是先提取dE里的RepID列表,然后用它来过滤df:

首先确保你已经导入Pandas,然后加载两个CSV文件:

import pandas as pd

# 加载主数据和匹配用的DataFrame
df = pd.read_csv('你的第一个csv文件路径.csv')
dE = pd.read_csv('你的第二个csv文件路径.csv')

生成dY(RepID存在于dE的记录)

直接用isin()判断df的RepID是否在dE的RepID列中:

dY = df[df['RepID'].isin(dE['RepID'])]

生成dX(RepID不存在于dE的记录)

在isin()前面加~符号取反,就能得到不在匹配列表里的记录:

dX = df[~df['RepID'].isin(dE['RepID'])]

如果dE里有重复的RepID,先去重会让筛选更高效:

# 先提取dE中唯一的RepID
unique_rep_ids = dE['RepID'].unique()
dY = df[df['RepID'].isin(unique_rep_ids)]
dX = df[~df['RepID'].isin(unique_rep_ids)]

方法二:用merge()关联后筛选(适合需要更多关联信息的场景)

如果你需要后续对两个DataFrame的关联做更多操作,用merge的方式会更灵活:

# 用左连接关联两个DataFrame,添加_merge列标记关联状态
merged_df = df.merge(dE, on='RepID', how='left', indicator=True)

# _merge值为'both'表示RepID同时存在于两个DataFrame,对应dY
dY = merged_df[merged_df['_merge'] == 'both'].drop('_merge', axis=1)

# _merge值为'left_only'表示RepID只存在于df,对应dX
dX = merged_df[merged_df['_merge'] == 'left_only'].drop('_merge', axis=1)

两种方法都能实现你的需求,isin()更简洁高效,merge()则在需要扩展操作时更方便~

备注:内容来源于stack exchange,提问作者asmgx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:49:36