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

如何利用一个DataFrame的ID索引对另一个DataFrame进行切片?

解决方案:基于另一个DataFrame的ID筛选行

这是Pandas里非常常见的筛选场景,我给你分享几个简单高效的实现方法,根据你的df1结构不同可以灵活选择:

方法一:使用isin()方法(最直观)

这是最常用的方式,直接判断df2的ID是否存在于df1的ID集合中:

情况1:df1的ID是独立列

如果df1是一个包含ID列的DataFrame(就像你给出的结构展示的那样),直接用列匹配:

import pandas as pd

# 假设df1和df2已经创建完成
filtered_df = df2[df2['ID'].isin(df1['ID'])]

情况2:df1的ID是索引

如果df1的ID其实是它的行索引(比如你展示的df1结构里,loc1等是索引,ID是索引名),那需要先提取索引列表再匹配:

filtered_df = df2[df2['ID'].isin(df1.index)]

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

如果后续你还需要关联两个DataFrame的其他数据,用内连接的方式更合适,自动保留两边共同存在的ID行:

情况1:df1的ID是列

filtered_df = pd.merge(df2, df1, on='ID', how='inner')

情况2:df1的ID是索引

filtered_df = pd.merge(df2, df1, left_on='ID', right_index=True, how='inner')

效果验证

用你给出的示例数据,处理后filtered_df会只保留ID为loc1、loc2、loc3、loc6、loc9的行,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:47:03