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

如何在R语言中基于另一个DataFrame筛选DataFrame数据

用Pandas从DataFrame中筛选匹配另一DataFrame ID的行

现有两个共享id字段的DataFrame:

  • df1:包含多列数据(数千行)
  • df2:仅包含id和另一操作列

需要从df1中筛选出所有id存在于df2中的行,生成保留df1全部列的新DataFrame df3,同时自动忽略df2中不存在于df1的id。

示例数据

df1:

idzonecategorystatus
M3RR9000Ixon track
M3RR9012IIcfinished
M3RR9020Vvon track

df2:

idvalue
M3RR90003

期望结果df3:

idzonecategorystatus
M3RR9000Ixon track

解决方案

方法1:使用isin()直接筛选

通过布尔索引快速筛选出匹配id的行,自动忽略df2中不存在于df1的id:

import pandas as pd

# 构造示例数据
df1 = pd.DataFrame({
    'id': ['M3RR9000', 'M3RR9012', 'M3RR9020'],
    'zone': ['I', 'II', 'V'],
    'category': ['x', 'c', 'v'],
    'status': ['on track', 'finished', 'on track']
})

df2 = pd.DataFrame({
    'id': ['M3RR9000'],
    'value': [3]
})

# 筛选id匹配的行
df3 = df1[df1['id'].isin(df2['id'])]

方法2:使用merge()内连接

通过内连接仅保留两个DataFrame共有的id,同时指定只保留df1的列结构:

# 仅用df2的id列做内连接,避免带入多余列
df3 = pd.merge(df1, df2[['id']], on='id', how='inner')

内容的提问来源于stack exchange,提问作者Ramiro Guzmán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:01:02